대부분의 파라 메트릭 궤적에 대해이 문제에 대한 솔루션을 근사화 할 수 있습니다. 아이디어는 다음과 같습니다. 커브를 충분히 깊게 확대하면 해당 시점의 접선에서 커브 자체를 알 수 없습니다.
이 가정을 통해 두 개의 벡터 (입방 베 지어 곡선 등의 세 개) 이상을 미리 계산할 필요가 없습니다 .
따라서 곡선 경우 점에서 접선 벡터 를 계산합니다 . 이 벡터의 표준은 이므로 동안 이동 한 거리는 로 근사 할 수 있습니다 . 그 다음에 거리 이 .엠( t )디엠디티티∥ d엠디티∥Δ의 t∥ d엠디티∥ Δ t엘L ÷ ∥ d엠디티∥
응용 : 이차 베 지어 곡선
베 지어 곡선의 제어점이 , 및 인 경우 궤적은 다음과 같이 표현 될 수 있습니다.에이비기음
엠( t )= ( 1 − t )2A + 2 t ( 1 − t ) B + t2기음= t2( A - 2 B + C) + t ( − 2 A + 2 B ) + A
따라서 파생 상품은 다음과 같습니다.
디엠디티= t ( 2 - 4 B + 2 C) + ( − 2 A + 2 B )
벡터 및 어딘가에 저장하면됩니다. 그런 다음 주어진 에 대해 길이 진행을 원하면 다음을 수행하십시오.V⃗ 1= 2 - 4 B + 2 CV⃗ 2= - 2 + 2 B티엘
t = t + LL의 예 N gt h ( t ⋅ v⃗ 1+ v⃗ 2)
입방 베 지어 곡선
동일한 추론이 네 개의 제어점이 , , 및 곡선에 적용됩니다 .에이비기음디
엠( t )= ( 1 − t )삼A + 3 t ( 1 − t )2B + 3 톤2( 1 − t ) C+ t삼디= t삼( − A + 3 B − 3 C+ D ) + t2( 3 A−6B+3C) + t ( − 3 A + 3 B ) + A
파생 상품은 다음과 같습니다.
디엠디티= t2( − 3 A + 9 B − 9 C+3D)+t(6A−12B+6C)+(−3A+3B)
우리는 세 가지 벡터를 미리 계산합니다.
v⃗ 1v⃗ 2v⃗ 3=−3A+9B−9C+3D=6A−12B+6C=−3A+3B
최종 공식은 다음과 같습니다.
t=t+Llength(t2⋅v⃗ 1+t⋅v⃗ 2+v⃗ 3)
정확도 문제
합리적인 프레임 속도로 실행하는 경우 (프레임 기간에 따라 계산되어야 함)은 근사값이 충분히 작습니다.L
그러나 극단적 인 경우 부정확 한 상황이 발생할 수 있습니다. 이 너무 큰 경우 계산을 조각 단위로 수행 할 수 있습니다 (예 : 10 개 부분 사용).L
for (int i = 0; i < 10; i++)
t = t + (L / 10) / length(t * v1 + v2);