노드 베 지어 커브를 제거하는 알고리즘을 작성하는 데 도움이 필요합니다. 입방 형 베 지어 곡선을 사용하면 공통점 (P3 = Q0)을 갖는 두 개의 곡선 (P0, P1, P2, P3 및 Q0, Q1, Q2, Q3)이 있습니다. 단일 곡선 (P0, R1, R2, Q3)을 가져와 2의 모양을 반복해야합니다. 제어점 R1, R2의 좌표를 찾는 방법은?커브의 모양이 변경되지 않도록 베 지어 곡선의 노드를 제거하는 방법은 무엇입니까?
감사합니다.
노드 베 지어 커브를 제거하는 알고리즘을 작성하는 데 도움이 필요합니다. 입방 형 베 지어 곡선을 사용하면 공통점 (P3 = Q0)을 갖는 두 개의 곡선 (P0, P1, P2, P3 및 Q0, Q1, Q2, Q3)이 있습니다. 단일 곡선 (P0, R1, R2, Q3)을 가져와 2의 모양을 반복해야합니다. 제어점 R1, R2의 좌표를 찾는 방법은?커브의 모양이 변경되지 않도록 베 지어 곡선의 노드를 제거하는 방법은 무엇입니까?
감사합니다.
일반적으로 요청하는 작업을 수행 할 수 없습니다. 당신은 자유도 7에서 4로 내려 가고 같은 결과를 유지하려고합니다. 더 낮은 DOF 시스템의 대표적인 힘은 더 높은 DOF의 그것과 일치 할 수 없다. 가능할 수있는 유일한 시간은보다 복잡한 곡선이 더 단순한 공간에 여전히 존재하는 경우입니다. 예를 들어, 두 베 지어 곡선이 단일 부모 곡선을 점 R0, R1, R2, R3
으로 세분하여 나온 경우입니다. de Casteljau 알고리즘을 사용하여 동일한 원래 곡선에 있고 t
거리 (원래의 곡선을 따라 t
이 [0,1]
인 점)를 공유하는 두 개의 새로운 곡선, P
과 Q
을 생성 할 수 있습니다.
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 차원 점입니다. 따라서 각 차원에 대해 개별적으로이를 해결하고 평균을 찾거나 좀 더 정교 해지고 제곱 오류를 최소화 할 수 있습니다.
마치 P1 대 Q1과 P2 대 Q2의 보간법을 수행해야하는 것처럼 들리지만 실제로 문제가 더 복잡합니까? – Till
P1, P2, Q1 및 Q2 - 베 지어 곡선의 제어점입니다. 나는 당신이 보간이라고 말하는 것에 대해 이해하지 못합니다. 예를 들어 CorelDRAW에서 노드를 제거 할 때 P0P1 및 Q3Q2 가이드가 증가 또는 감소합니다. 곡선은 원래의 두 개를 대략 따라갑니다. 그와 비슷한 것을 할 필요가 있습니다 –
결합 된 커브에 구부러진 부분이 있으면 어떻게해야합니까? 단지 P3 = Q0이 연결이 매끄 럽다는 것을 의미하지는 않습니다. 나는 부드러운 연속이 P2, P3 = Q0 및 Q1이 선상에있을 것을 요구한다고 생각한다. (그리고 아마 심지어 | P3-P2 | = | Q1-Q0 |, P3과 P2 사이의 거리는 Q1과 Q0 사이의 거리와 같다.). –