Essential Mathematics for Computational Design 25 NURBS곡선

NURBS 곡선을 위한 De Boor[1] 알고리즘 (De Boor7 algorithm for evaluating NURBS curves)

De Boor 의 알고리즘은 베지에곡선에 사용되는 De Castelijau 알고리즘을 일반화 시킨 것입니다. 이 알고리즘은 수적으로 더욱 안정적이며, NURBS 곡선상의 점을 계산하기 위해 널리 사용됩니다. 아래 그림은 De Boor 알고리즘을 이용하여 3차 NURBS 곡선 위에 있는 점을 계산하는 것을 보여주고 있습니다. [2]
이를 위해 필요한 인풋으로는 P0, P1, P2, P3, P4, P5, P6 이라는 이름을 가진 7개의 컨트롤 포인트와 다음과 같은 매듭 벡터(Knot Vector)가 있습니다.

u0 = 0.0
u1 = 0.0
u2 = 0.0
u3= 0.25
u4 = 0.5
u5 = 0.75
u6 = 1.0
u7 = 1.0
u8 = 1.0
 

아웃풋으로는 u=0.4 인 곡선 위의 한 점입니다. 그 계산 순서는 다음과 같습니다.

1. 첫 번째 iteration의 계수 구하기

Ac = (u – u1) / ( u1+3 – u1) = 0.8

Bc = (u – u2) / ( u2+3 – u2) = 0.53

Cc = (u – u3) / ( u3+3 – u3) = 0.2
 
2. 구해진 계수를 이용하여 점을 구하기

A = 0.2P1 + 0.8P2

B = 0.47 P2 + 0.53 P3

C = 0.8 P3 + 0.2 P4
 

3. 두 번째 iteration의 계수를 구하기

Dc = (u – u2) / (u2+3-1 – u2) = 0.8

Ec = (u – u3) / (u3+3-1 – u3) = 0.3
 
4. 구해진 계수를 이용하여  점을 구하기

D = 0.2A+ 0.8B

E = 0.7B + 0.3C

 

5. 마지막 계수 구하기

Fc = (u – u3)/ (u3+3-2 – u3) = 0.6

 
아래는 DeBoor 알고리즘을 이용하여 매개변수를 u=0.4 로 가지는 NURBS 곡선 위의 점을 찾아내는 Grasshopper 정의 입니다.

그림 27 De Boor 알고리즘을 이용한 NURBS 곡선 상의 점 계산

[1] De Boor’s 알고리즘에 대한 자세한 내용은 http://en.wikipedia.org/wiki/De_Boor’s_algorithm을 참고해주세요.
[2] 알고리즘에 대한 일반적인 내용과 그 예시는http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/de-Boor.html 에 있습니다.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s