{{위키데이터 속성 추적}}
'''비균일 유리 B-스플라인'''(Non-Uniform Rational B-spline) 3차원 기하체를 수학적으로 재현하는 방식 중 하나이다. 약자로 '''NURBS'''라고 하기도 한다. 2차원의 간단한 선분 원, 호, 곡선부터 매우 복잡한 3차원의 유기적 형태의 [[곡면]]이나 덩어리까지 매우 정확하게 표현할 수 있으며 그 편집이 무척 쉽다. 이러한 유연성과 정밀성 때문에 NURBS는 그림, 애니메이션이나 곡면의 물체를 생산하는 산업에까지 다양한 영역에서 사용된다.

== NURBS 모델링의 장점 ==
이러한 NURBS를 기반으로 하는 3차원 모델링 프로그램 Rhinoceros에서는 밝히는 NURBS 모델링의 장점은 다음과 같다.

NURBS 기하체를 표준으로 사용하는 다양한 산업 분야가 존재한다. 이것은 하나의 NURBS 기하체를 이용하여 이것을 모델링, 렌더링, 애니메이션, 그리고 공학분석 프로그램에 다양하게 사용할 수 있다. NURBS는 그 기하학적 정보를 20년 후에도 사용 가능한 방식으로 저장한다.

NURBS는 매우 정확하며 널리 알려진 개념이다. 수학 뿐만 아니라 컴퓨터 과학에서도 NURBS 기하체는 중요하게 다뤄지며 많은 유명한 대학에서도 가르쳐 지고 있다. 이것은 소프트웨어 생산자나 엔지니어들, 산업디자인 회사들, 그리고 애니메이터들이 자신들 고유의 방식으로 프로그램이 필요할 때 프로그램을 수정해서 사용하기 쉽다는 것을 의미한다.

NURBS는 간단한 선분, 원, [[타원]], 구부터 자동차나 사람의 몸과 같은 자유곡면의 기하체를 매우 정확하게 묘사할 수 있다.

NURBS의 경우 특정한 기하체를 묘사하기 위해 필요한 정보의 양이 다른 방식보다 훨씬 적다.

이러한 NURBS의 계산 방식(evaluation rule)은 컴퓨터에서 효과적이고 정확하게 실행될 수 있다.

== NURBS 기하체 ==
NURBS 곡선과 NURBS 곡면은 비슷한 원리를 가지고 있으며 같은 요소들에 의하여 제어된다. 그 요소는 바로 차수(degree), 컨트롤 포인트(control points), 매듭(knots), 그리고 계산방식(evaluation rule)이다.

==차수==
차수는 양수인 정수이다. 일반적으로 1차,2차,3차, 5차가 사용된다. NURBS로 그려진 원의 경우 2차이며, 대부분의 자유형상곡면은 3차 혹은 5차이다. NURBS 커브의 위수(order) 또한 양의 정수이며 이것은 차수에 1을 더한 것과 같다. 결과적으로 그 차수는 위수에서 1을 뺀 것과 같다. 한 곡선이 있을 때 이것의 차수를 변경하면, 그 선분의 형태는 변하게 된다.

==컨트롤 포인트==
NURBS 곡선은 곡선의 차수에 1을 더한 수 이상의 (degree +1) ‘컨트롤 포인트’를 가진다. NURBS 곡선의 형태를 바꿀 수 있는 가장 쉬운 방법은 바로 이 컨트롤 포인트들을 움직이는 것이다. 컨트롤 포인트들은 ‘무게(weight)’와 관련되어 있다. 몇 가지 예외를 제외하고, 이 컨트롤 포인트들의 무게는 양수이다. 한 곡선의 모든 ’컨트롤 포인트’들이 같은 무게를 가지고 있을 때 (보통 1), 이 곡선을 비유리(non-rational)라고 한다. NURBS(NURBS)에서 R은 이 ‘유리(rational)’을 의미한다. 실생활에서 대부분의 경우 NURBS 곡선은 유리하지 않다. 원과 타원은 항상 ‘유리(rational)’한 곡선의 예이다.

==매듭==
매듭(knot)이란 곡선의 차수에 그 컨트롤 포인트의 개수를 더한 뒤 여기서 다시 1을 뺀 수들의 목록을 의미한다. 이러한 수의 집합을 매듭 벡터(knot vector)라고 하는데, 여기서의 벡터는 3d에서 사용되는 방향을 의미하지 않는다. 이러한 수의 목록이 ‘매듭’이 되기 위해서는 여러 가지 조건을 만족시켜야 한다. 먼저 목록 내의 수가 뒤에 써있을수록 수의 값이 그대로 이거나 증가해야 한다. 또한 같은 값이 반복될 경우 그 횟수는 곡선의 차수보다 클 수 없다. 예를 들어 3차에 11개의 컨트롤 포인트를 가진 NURBS 곡선의 경우, 0,0,0,1,2,2,2,3,7,7,9,9,9을 그 매듭으로 가질 수 있다. 하지만 0,0,0,1,2,2,2,2,7,7,9,9,9는 성립하지 않는데 그 이유는 2가 네 개이기 때문이다.
매듭 내에서 특정 수가 반복될 경우 그 횟수를 ‘매듭 반복횟수(knot’s multiplicity)’ 라고 한다. 위의 예를 다시 보면 매듭값 0은 반복횟수가 3이며, 1은 1, 2는 3, 3은 1, 7은 2, 9는 3이다. 반복횟수가 차수와 같을 경우 이 매듭을 ‘최대반복매듭(full-multiplicity knot)’이라고 한다. 즉 이 예시에서 최대반복매듭은 0, 2, 9이다. 매듭 값이 한 번만 나타나는 경우에는 이를 단순 매듭(simple knot)이라고 한다. 위 예시의 경우 1과 3이 바로 ‘단순 매듭’이다.
매듭 내에서 특정 수가 반복될 경우 그 횟수를 ‘매듭 반복횟수(knot’s multiplicity)’ 라고 한다. 이러한 매듭 값이 시작과 끝이 아닌 중간에서 반복 된다면, 이것은 해당 NURBS 곡선이 덜 부드럽다는 것을 의미한다. 극단적으로 어떤 NURBS곡선에서 ‘최대반복매듭’이 매듭 목록의 중간에 있다면 이 곡선은 이 부분에서 더욱 급하게(kink) 구부러지는 것을 의미한다. 이러한 특성을 이애한다면 컨트롤 포인트를 움직이는 것 뿐만 아니라 매듭을 더하거나 제거하면서 곡면을 디자인 하는 것이 가능하다. 매듭을 NURBS커브에 더해도 그 형상은 바뀌지 않는다. 하지만 매듭을 제거하게 되면 일반적으로 커브의 형상은 변하게 된다.

==매듭과 컨트롤 포인트==
흔히 하나의 매듭과 하나의 컨트롤 포인트가 쌍으로 묶여있다고 오해한다. 이것은 1차 NURBS 커브(폴리라인)의 경우에만 성립한다. 하지만 더 높은 차수의 NURBS커브의 경우 차수에 2를 곱한 수의 매듭이 차수에 1을 더한 수 만큼의 컨트롤 포인트와 상응하게 된다. 예를 들어 7개의 컨트롤 포인트를 가진 3차 NURBS 커브가 0,0,0,1,2,5,8,8,8이라는 매듭을 가지고 있다고 하자. 이 경우 처음 네 개의 컨트롤 포인트 들은 처음 여섯 개의 매듭들과 하나의 그룹으로 묶여있다. 두 번째에서 다섯 번째 컨트롤 포인트의 경우 이것은 매듭 0,0,1,2,5,8과 묶여 있으며 세 번째에서 여섯 번째 컨트롤 포인트의 경우 0,1,2,5,8,8이라는 매듭과 묶여 있다. 마지막 네개의 컨트롤 포인트는 뒤에서 여섯 개의 매듭들과 묶여 있다.

==계산 방식==
곡선을 계산하는 방식은 하나의 수를 취하고 이것에 점을 부여하는 수학적 공식이다. 이는 차수, 컨트롤 포인트, 그리고 매듭에 관한 공식으로 B-spline에 기반하는 함수가 있다. NURBS 의 B와 S는 basis spline을 의미한다. 이 계산 방식에서 사용되는 수를 ‘매개변수(parameter)’라고 한다. 쉽게 생각해서 이러한 매개변수들이 들어가는 상자가 있고, 이 상자는 점의 위치를 산출해 내게 된다. 그리고 차수, 매듭, 컨트롤 포인트가 바로 이 상자가 작동하는 방식을 의미한다.

== 같이 보기 ==
* [[스플라인 곡선]]
* [[점구름]]
== 참고 ==
* [http//www.rhino3d.com/nurbs.htm http//www.rhino3d.com/nurbs.htm]
* [http//geometricmind.wordpress.com/category/translation/ Essential Mathematics for Computational Design 한글 번역본]

[[분류:컴퓨터 지원 설계]]
[[분류:3차원 컴퓨터 그래픽스]]
[[분류:보간법]]
[[분류:스플라인]]