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)와 달리 다가(되접힘·루프)인 형상도 나타낼 수 있다.
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이면 자동.
tck : tuple
(t, c, k). eval_bspline_curve에 넘긴다.
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.