2011-12-31 4 views
2

노드 베 지어 커브를 제거하는 알고리즘을 작성하는 데 도움이 필요합니다. 입방 형 베 지어 곡선을 사용하면 공통점 (P3 = Q0)을 갖는 두 개의 곡선 (P0, P1, P2, P3 및 Q0, Q1, Q2, Q3)이 있습니다. 단일 곡선 (P0, R1, R2, Q3)을 가져와 2의 모양을 반복해야합니다. 제어점 R1, R2의 좌표를 찾는 방법은?커브의 모양이 변경되지 않도록 베 지어 곡선의 노드를 제거하는 방법은 무엇입니까?

감사합니다.

+0

마치 P1 대 Q1과 P2 대 Q2의 보간법을 수행해야하는 것처럼 들리지만 실제로 문제가 더 복잡합니까? – Till

+0

P1, P2, Q1 및 Q2 - 베 지어 곡선의 제어점입니다. 나는 당신이 보간이라고 말하는 것에 대해 이해하지 못합니다. 예를 들어 CorelDRAW에서 노드를 제거 할 때 P0P1 및 Q3Q2 가이드가 증가 또는 감소합니다. 곡선은 원래의 두 개를 대략 따라갑니다. 그와 비슷한 것을 할 필요가 있습니다 –

+0

결합 된 커브에 구부러진 부분이 있으면 어떻게해야합니까? 단지 P3 = Q0이 연결이 매끄 럽다는 것을 의미하지는 않습니다. 나는 부드러운 연속이 P2, P3 = Q0 및 Q1이 선상에있을 것을 요구한다고 생각한다. (그리고 아마 심지어 | P3-P2 | = | Q1-Q0 |, P3과 P2 사이의 거리는 Q1과 Q0 사이의 거리와 같다.). –

답변

0

일반적으로 요청하는 작업을 수행 할 수 없습니다. 당신은 자유도 7에서 4로 내려 가고 같은 결과를 유지하려고합니다. 더 낮은 DOF 시스템의 대표적인 힘은 더 높은 DOF의 그것과 일치 할 수 없다. 가능할 수있는 유일한 시간은보다 복잡한 곡선이 더 단순한 공간에 여전히 존재하는 경우입니다. 예를 들어, 두 베 지어 곡선이 단일 부모 곡선을 점 R0, R1, R2, R3으로 세분하여 나온 경우입니다. de Casteljau 알고리즘을 사용하여 동일한 원래 곡선에 있고 t 거리 (원래의 곡선을 따라 t[0,1] 인 점)를 공유하는 두 개의 새로운 곡선, PQ을 생성 할 수 있습니다.

P0 = R0 
P1 = R0*(1-t) + R1*t 
X = R1*(1-t) + R2*t 
P2 = P1*(1-t) + X*t 
Q3 = R3 
Q2 = R2*(1-t) + R3*t 
Q1 = X*(1-t) + Q2*t 
Q0 = P3 = P2*(1-t) + Q1*t 

원래 지점에 해당 관계가 없으면 근사값을 지정해야합니다. 하지만 당신은 관계가 유지 척으로 도망 그냥 방정식 반전 될 수 있습니다

R1 = (P1 - P0*(1-t))/t 
R2 = (Q2 - Q3*t)/(1-t) 

P2, Q0, Q1하지 않는 한 그것은하지 않습니다 공동 선형 때문 마지막 방정식 문제입니다

t = (Q0 - P2)/(Q1 - P2) 

을 정확하게 작동합니다. t은 스칼라이지만 일반적으로 Q1-P2은 n 차원 점입니다. 따라서 각 차원에 대해 개별적으로이를 해결하고 평균을 찾거나 좀 더 정교 해지고 제곱 오류를 최소화 할 수 있습니다.