도구스개발

B-스플라인 곡선 생성기

제어점과 차수를 넣으면 드 부어(de Boor) 알고리즘으로 B-스플라인 곡선을 그립니다. 베지어와 달리 제어점을 지나지 않고 국소적으로만 당기는 근사 곡선이라, 점 하나를 옮겨도 곡선 전체가 아니라 그 근처만 바뀝니다.

쉼표·탭·공백 아무거나 구분자로 씁니다. #로 시작하는 줄은 주석입니다.

곡선 표본

201개 점

제어점 7개 · 차수 3 · 매듭 벡터 [0, 0, 0, 0, 0.25, 0.5, 0.75, 1, 1, 1, 1]

곡선 시작점(0, 0)
첫 제어점(0, 0)
곡선 끝점(100, 0)
마지막 제어점(100, 0)
곡선은 제어점을 지나지 않습니다(양 끝은 예외). 점선으로 표시한 제어다각형(제어점을 순서대로 이은 직선들)이 곡선을 «당기기»만 할 뿐, 중간 제어점을 곡선이 실제로 지나가지는 않습니다. 클램프(clamped) 매듭 벡터를 쓰기 때문에 첫·마지막 제어점만은 예외로 곡선이 정확히 지납니다.
제어점을 옮기면 그 근처만 바뀝니다. 베지어 곡선은 제어점 하나만 옮겨도 곡선 전체의 모양이 바뀌지만, B-스플라인은 국소 지지(local support)라 불리는 성질 덕분에 그 제어점의 영향이 미치는 구간(차수+1개의 매듭 구간)만 바뀌고 멀리 떨어진 구간은 조금도 바뀌지 않습니다. 점이 많은 복잡한 곡선을 편집할 때 이 국소성이 결정적으로 유리합니다.
차수를 올릴수록 곡선이 매끈해지지만 제어점에서 더 멀어집니다. 차수가 (제어점 수−1)이 되면 전 구간이 사실상 베지어 곡선 하나와 같아져 국소성이 사라집니다.

사용 방법

  1. 1제어점을 순서대로 넣습니다.
  2. 2차수(degree)를 정합니다 — 클수록 곡선이 매끈해지고 제어점에서 더 멀어집니다.
  3. 3그려진 곡선과, 곡선을 만드는 데 쓰인 매듭 벡터를 확인합니다.

자주 묻는 질문

제어점 여러 개로 곡선의 모양을 잡되, 곡선이 제어점을 정확히 지나지는 않고 그쪽으로 당겨지기만 하는 근사 곡선입니다. 드 부어 알고리즘으로 매개변수 u마다 곡선 위의 점을 계산합니다.

dev/cubic-bezier는 제어점 4개로 정해지는 단일 구간 곡선이라, 제어점을 하나 옮기면 곡선 전체의 모양이 바뀝니다. B-스플라인은 여러 개의 국소 구간으로 나뉘어 있어, 제어점 하나를 옮기면 그 근처 구간만 바뀌고 멀리 떨어진 구간은 조금도 바뀌지 않습니다(국소 지지, local support) — CAD·그래픽스 툴이 점이 많은 복잡한 곡선에 베지어 대신 B-스플라인을 쓰는 이유입니다.

그 도구는 주어진 자료점을 정확히 지나가야 하는 보간 곡선이라 매듭에서 값이 고정됩니다. B-스플라인은 반대로 제어점을 지나지 않는 근사 곡선입니다 — 손으로 곡선의 «대강의 모양»을 잡을 때는 B-스플라인이, 실측 자료를 정확히 재현해야 할 때는 보간 곡선이 맞습니다.

곡선을 이루는 국소 구간의 경계를 매개변수 축 위에 표시한 값들입니다. 이 계산기는 양 끝을 (차수+1)번 반복하는 «클램프(clamped)» 매듭 벡터를 씁니다 — 이 조건 덕분에 곡선이 첫 제어점에서 시작해 마지막 제어점에서 끝나는 것이 보장됩니다.

알아두면 좋은 점

  • 제어점은 최대 12개, 차수는 1~5까지 다룹니다.
  • 차수는 제어점 개수−1보다 클 수 없습니다(예: 제어점 4개면 차수는 최대 3).

함께 보면 좋은 도구

마지막 검증: 2026년 9월 3일 · 결과는 참고용 추정치입니다.