2009-07-02 2 views
2

2 차 베 지어 곡선을 보간하기 위해 AS2에서 코드를 얻고 싶습니다. 노드는 서로 일정 거리 떨어져 있어야합니다. 기본적으로 3 점으로 정의 된 비 쌍곡선의 2 차 베 지어 곡선을 따라 일정한 속도로 볼을 애니메이션화합니다. 감사합니다.2 차 베 지어 보간

+0

나는 이미 복잡한 수학적 재료를 보았지만 그것은 as2에서하는 방법을 모른다는 integrals를 포함한다. –

답변

5

베 지어 곡선 수학은 실제로 매우 간단하므로 도움을 받아 ActionScript로 변환 할 수 있습니다.

2D 2 차 베 지어 곡선은 3 개의 (x,y) 좌표로 정의됩니다. 이를 P0 = (x0,y0), P1 = (x1,y1)P2 = (x2,y2)이라고합니다. 또한 의 매개 변수 값은 0에서 1까지이며 곡선을 따라 위치를 나타내는 데 사용됩니다. 모두 x, yt 변수는 실수 (실수)입니다.

이차 베 지어 곡선의 방정식은 다음과

for i = 0 to step_count 
    t = i/step_count 
    u = 1 - t 
    P = P0*u*u + P1*2*u*t + P2*t*t 
    draw_ball_at_position(P) 

이 이미 정의되어 있다고 가정합니다

P(t) = P0*(1-t)^2 + P1*2*(1-t)*t + P2*t^2 

그래서 의사 코드를 사용하여, 우리가 원활 그래서 같은 베 지어 곡선을 추적 할 수 있습니다 위와 같이 포인트 P0, P1P2. 제어점을 균등하게 배치하면 커브를 따라 멋진 단계가 있어야합니다. step_count를 커브를 따라 보려는 단계의 수로 정의하십시오.

1

수학적으로 훨씬 더 효율적으로 식을 표현할 수 있습니다.

P(t) = P0*(1-t)^2 + P1*2*(1-t)*t + P2*t^2 

P = P0*u*u + P1*2*u*t + P2*t*t 

간략화 할 수 모두 보류 t 곱셈

. 예를 들어

는 :

C = A*t + B(1-t) = A*t + B - B*t = t*(A-B) + B

= 당신은 하나의 곱셈 = 더블 성능을 저장.

+4

번스타인 기초는 본질적으로 더 수치 적으로 안정하다. 따라서 정밀도가 중요한 경우 다항식을 재구성하지 않아야합니다. 틀림없이 볼을 애니 메이팅하는 데는별로 중요하지 않지만 CAD 패키지에는 큰 도움이됩니다. – Naaff

1

Naaff에 의해 제안 된이 솔루션은 그게 당신에게 정확한 "모양"을 얻을 것이다, P(t) = P0*(1-t)^2 + P1*2*(1-t)*t + P2*t^2이지만, P(t)을 균등 간격 생산하지 않습니다 [0:1] 간격 t을 균등 간격 선택. 즉, 속도가 일정하지 않습니다 (이전의 방정식을 t과 구분하여 볼 수 있습니다).

보통 일정 속도로 파라 메트릭 커브를 트래버스하는 일반적인 방법은 호 길이로 재 패터닝하는 것입니다. 이것은 PP(s)으로 표현하는 것을 의미하며, 여기서 s은 곡선을 따라 가로 지르는 길이입니다. 분명히 s은 0에서 곡선의 전체 길이까지 다양합니다. 2 차 베 지어 곡선의 경우에는 호 길이에 대한 닫힌 형식의 해가 t의 함수로 있지만 약간 복잡합니다. 계산적으로, 자주 좋아하는 방법을 사용하여 수치 적으로 통합하는 것이 더 빠릅니다. 그러나이 아이디어는 역함수, 즉 t(s)을 계산하여 PP(t(s))으로 표현한다는 점에 유의하십시오. 그런 다음 균등 간격의 s을 선택하면 균등 한 공간 인 P이 생성됩니다.