fit_bspline_curve — 3D freeform op

• 데이터 종류: points → bspline_curve

• 호출: import fullseye as fs; fs.ledger.fit_bspline_curve(points, smooth=0.0, k=3, nest=None)(구현을 직접 호출하려면 import bspline_surf; bspline_surf.fit_bspline_curve(points, smooth=0.0, k=3, nest=None), 원장에서 가져오려면 ops3d.get("fit_bspline_curve"))

사용법

순서 있는 점열 (M,D) 에 B 스플라인 곡선을 적합(splprep, 매개변수).

심/에지/계측 프로브 궤적 등 "나열 순서가 의미를 갖는" 점열을 매끄러운파라메트릭 곡선 r(u), u∈[0,1]로 복원한다. z=f(x,y)와 달리 다가(되접힘·루프)인 형상도 나타낼 수 있다.

Parameters

points : array_like, shape (M, D)

순서가 있는 정점. D=3이 전형(3D 곡선)이지만 2D 이상을 허용.

smooth : float

평활화 계수 s. 0.0이면 모든 점 통과(보간), 클수록 매끄럽다.

k : int

차수(기본값 3=삼차). 점 수가 k+1 미만이면 자동으로 낮춘다.

nest : int or None

절점 수의 상한(splprep에 그대로 넘긴다). None이면 자동.

Returns

tck : tuple

(t, c, k). eval_bspline_curve에 넘긴다.

Raises

ValueError

점 수가 2 미만, 차원 부정합, 비유한값, 또는 중복/축퇴로 splprep이

곡선을 반환할 수 없는 경우.

보충:

• 기본값 smooth=0.0은 보간(모든 점 통과). 곡면 쪽의 기본값(점 수로부터의 자동값)과 다르므로, 잡음이 있는 점열은 명시적으로 smooth를 준다. 파라미터 u는 splprep의 기본값(현 길이에 비례하여 [0,1]로 정규화).

• 차수 k는 k >= m일 때 m-1로 조용히 낮춘다(2점이면 직선).

• 연속된 중복점이 있으면 splprep이 실패해 ValueError가 된다. 전단에서 중복을 제거하거나 resample_uniform으로 등간격화한다.

• 반환하는 tck는 [t, c, k]의 list(c는 D개의 계수 배열 리스트). eval_bspline_curve에 넘긴다. 닫힌 곡선으로는 다루지 않는다(끝점은 열린 채).

• 결정론적(난수 없음).

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.

• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.

실행 가능한 예제(이 연산자를 실제로 호출하는 검증된 샘플)

• bspline_freeform — py -3.11 examples_3d/bspline_freeform.py

타입이 이어지는 다음 연산자(bspline_curve 를 입력으로 받는 것)

fuse_to_voxel · eval_bspline_curve

같은 카테고리(freeform)

fit_bspline_surface · eval_bspline_surface · surface_residual · eval_bspline_curve


*Provenance: bspline_surf.py — 3D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.