Search
๐Ÿ™†โ€โ™€๏ธ

Ch.9 B-Spline Curves

course
last review
mastery
intermediate
progress
not started
date
2023/09/26
4 more properties
Previous chapter

Todayโ€™s MAIN QUEST

B-Spline์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , Bezier Curve์™€์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•ด๋ณด์ž.

Continuity Analysis

C0 Continuity (Positional Continuity)

C1 Continuity (Velocity Continuity)

B-Splines

n์ฐจ Basisfunction์„ ๋งค๊ฐœ๋ณ€์ˆ˜ t์— ์˜ํ•ด ์ •์˜๋œ๋‹ค.
์ด๋•Œ t (0~1)์€ m๊ฐœ์˜ knots๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค.
Bi,0(t)B_{i,0}(t)์ผ๋•Œ๋ฅผ ์‚ดํŽด๋ณด์ž.
Bi,0(t):={1ifย tiโ‰คt<ti+1,0ifย ย otherwiseB_{i,0}(t):= \begin{cases}1 & \text{if }t_i\leq t < t_{i+1}, \\ 0 & \text{if }\text{ otherwise} \end{cases}
๋” ๋†’์€ ์ฐจ์ˆ˜์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•œ๋‹ค.
Bi,p(t):=tโˆ’titi+pโˆ’tiBi,pโˆ’1(t)+ti+p+1โˆ’tti+p+1โˆ’ti+1Bi+1,pโˆ’1(t)B_{i,p}(t):= \frac{t-t_i}{t_{i+p}-t_i}B_{i,p-1}(t) + \frac{t_{i+p+1}-t}{t_{i+p+1}-t_{i+1}}B_{i+1,p-1}(t)
์ด๋•Œ ๊ฐ ์ ํ™”์‹์˜ ๊ณ„์ˆ˜๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค
tโˆ’titi+pโˆ’tiBi,pโˆ’1(t)\frac{t-t_i}{t_{i+p}-t_i}B_{i,p-1}(t)
tโˆ’tit-t_i๋ฅผ ti+pโˆ’tit_{i+p}-t_i์˜ ๊ธธ์ด๋งŒํผ ๋‚˜๋ˆ„๋ฉด tiโ€ฆti+pt_i \dots t_{i+p}๊นŒ์ง€์˜ ๊ตฌ๊ฐ„ ์ค‘ ํ˜„์žฌ t๊ฐ€ ํ•ด๋‹น ๊ตฌ๊ฐ„์— ์–ด๋Š ๋น„์œจ์˜ ์œ„์น˜์— ์žˆ๋Š”์ง€๋ฅผ [0,1]๊ตฌ๊ฐ„์œผ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค.
ti+p+1โˆ’tti+p+1โˆ’ti+1Bi+1,pโˆ’1(t)\frac{t_{i+p+1}-t}{t_{i+p+1}-t_{i+1}}B_{i+1,p-1}(t)
๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ti+p+1โˆ’tt_{i+p+1}-t๋ฅผ ti+p+1โˆ’ti+1t_{i+p+1}-t_{i+1}์˜ ๊ธธ์ด๋งŒํผ ๋‚˜๋ˆ„๋ฉด ti+1โ€ฆti+p+1t_{i+1} \dots t_{i+p+1}๊นŒ์ง€์˜ ๊ตฌ๊ฐ„ ์ค‘ ํ˜„์žฌ t๊ฐ€ ํ•ด๋‹น ๊ตฌ๊ฐ„์— ์–ด๋Š ๋น„์œจ์˜ ์œ„์น˜์— ์žˆ๋Š”์ง€๋ฅผ ์ด๋ฒˆ์—๋Š” [1,0]๊ตฌ๊ฐ„์œผ๋กœ ๊ฑฐ๊พธ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค.
์ฆ‰, ํ•ด๋‹น Basis Function์€ t์˜ ์œ„์น˜์—์„œ ๊ฐ ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์„ i๋ถ€ํ„ฐ i+p๊นŒ์ง€ ๋”ํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
๊ทธ๋‚˜์ €๋‚˜ ์ € ์‹๋“ค ์–ด๋””์„œ ๋ณธ ๊ฒƒ ๊ฐ™์ง€ ์•Š๋‚˜?
vM=vP0ร—(1โˆ’t)+vP1ร—tv_M = v_{P_0}\times (1-t) + v_{P_1}\times t
Bi,p(t):=tโˆ’titi+pโˆ’tiBi,pโˆ’1(t)+ti+p+1โˆ’tti+p+1โˆ’ti+1Bi+1,pโˆ’1(t)B_{i,p}(t):= \frac{t-t_i}{t_{i+p}-t_i}B_{i,p-1}(t) + \frac{t_{i+p+1}-t}{t_{i+p+1}-t_{i+1}}B_{i+1,p-1}(t)
๋‘ ์‹์ด ๋งค์šฐ ๋‹ฎ์€ ๊ผด์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
knot ๋ฒกํ„ฐ๋ฅผ ์ •๊ทœํ™”ํ•œ ํ›„, ์ด์ „ Basis๋ฅผ ์กฐํ•ฉํ•œ๋‹ค๋Š” ์•„์ด๋””์–ด๋Š” ๋ฒ ์ง€์–ด ์ปค๋ธŒ๋ฅผ ์ผ๋ฐ˜ํ™”ํ•œ ๊ฒƒ๊ณผ ๊ฐ™์€ ์ด์•ผ๊ธฐ๋‹ค!
์ด๋Ÿฐ Basis Function์„ ๊ฐ ์ ์— ๋Œ€ํ•ด ๋ถ™์ด๋ฉด B-Spline ์™„์„ฑ์ด๋‹ค.
S(t)=โˆ‘i=0mโˆ’nโˆ’2PiBi,n(t)S(t) = \sum^{m-n-2}_{i=0}P_iB_{i,n}(t)

Knot๋Š” Control Point๊ฐ€ ์•„๋‹ˆ๋‹ค

์ด Spline์„ ์ดํ•ดํ•˜๋Š”๋ฐ ๊ฐ€์žฅ ํž˜๋“ค์—ˆ๋˜ ๋ถ€๋ถ„์ด๋‹ค. knot๋Š” Control Point๊ฐ€ ์–ด๋””๊นŒ์ง€ ์˜ํ–ฅ์„ ์ฃผ๋Š”๊ฐ€์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ์ง€, Control Point๊ฑฐ๋‚˜, Control Point๊ฐ€ ํฌํ•จ๋œ ์„œ๋ธŒ Control Point๊ฐ€ ์•„๋‹ˆ๋‹ค!!
๊ฐ€๋ น ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด์ž.
Bi,0(t):={1ifย tiโ‰คt<ti+1,0ifย ย otherwiseB_{i,0}(t):= \begin{cases}1 & \text{if }t_i\leq t < t_{i+1}, \\ 0 & \text{if }\text{ otherwise} \end{cases}
์ด ์‹์„ ์ œ๋Œ€๋กœ ์ดํ•ดํ•ด๋ณด์ž. 0์ฐจ์ผ ๊ฒฝ์šฐ์˜ Basis Function์ด๋‹ค. t๊ฐ€ ํ•ด๋‹น ๋ฒ”์œ„์— ์žˆ์„๋•Œ, Basis Function์€ 1์ด๊ฑฐ๋‚˜ 0์ด๋‹ค. ์ด๋•Œ knot vector์˜ ๊ฐœ์ˆ˜๋Š” n+1๊ฐœ. ์ฆ‰ n๊ฐœ์˜ ๊ตฌ๊ฐ„์—์„œ ๊ฐ i๋ฒˆ์งธ ๊ตฌ๊ฐ„์ผ๋•Œ, T์˜ ์œ„์น˜๋Š” ๊ฐ ์ปจํŠธ๋กค ํฌ์ธํŠธ๋กœ ์ด์‚ฐ์ ์ธ ๋ถ„ํฌ๋ฅผ ๋ณด์ธ๋‹ค.
5๊ฐœ์˜ Control Point๊ฐ€ ์žˆ๋Š” Linear B-Spline์„ ์‚ดํŽด๋ณธ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” Uniform์ด๋ผ ๊ฐ€์ •ํ•œ๋‹ค.
์œ„ ์Šฌ๋ผ์ด๋“œ์ฒ˜๋Ÿผ, Basis Function์— ์˜ํ•ด ๊ฐ ์ปจํŠธ๋กคํฌ์ธํŠธ๊ฐ€ ์˜ํ–ฅ์„ ์ฃผ๋Š” ๊ฐ’์€ ๊ทธ๋ž˜ํ”„๋ฅผ, ์˜ํ–ฅ์„ ์ฃผ๋Š” ๋ฒ”์œ„๋Š” ๊ทธ๋ž˜ํ”„๊ฐ€ ์–‘์ˆ˜์ธ ๋ฒ”์œ„๋งŒํผ์ด๋‹ค.
Degree๊ฐ€ 1, ์ปจํŠธ๋กค ํฌ์ธํŠธ๊ฐ€ 5๊ฐœ์ด๋ฏ€๋กœ, knot vector์˜ ์‚ฌ์ด์ฆˆ๋Š” 7์ด๋‹ค.
๋‹ค์‹œ ์žฌ๊ท€์ ์œผ๋กœ ๋Œ์•„๊ฐ€๋ณด์ž.
๊ฐ ์ปจํŠธ๋กคํฌ์ธํŠธ์— ๋Œ€ํ•ด์„œ 5๊ฐœ์˜ Basis Function์„ ๊ฐ€์ง€๊ธฐ ์œ„ํ•ด์„œ๋Š”, 0์ฐจ ์ผ ๋•Œ 6๊ฐœ์˜ 0์ฐจ Basis Function์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” 7๊ฐœ์˜ knot Vector๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
์ด๋•Œ, B0๋ฅผ ๋ฌด์‹œํ•˜๊ณ  B1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.(์œ„ ๊ทธ๋ž˜ํ”„๋Š” ์‚ฌ์‹ค Non Uniform์ด๋‹ค.)
B1์ด u1์— ๋„์ฐฉํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” Basis์˜ ์ดํ•ฉ์ด 1์ด ๋˜์ง€ ์•Š๋Š”๋‹ค! Affine ์ขŒํ‘œ๊ณ„๋กœ ํ™•์ธํ–ˆ์„๋•Œ, ํ•ด๋‹น ์ ์€ u๊ฐ€ u1์— ๋„์ฐฉํ•˜๊ธฐ๊นŒ์ง€ z=0์ถ•์—์„œ z=1์ธ์ถ•์œผ๋กœ ์„œ์„œํžˆ ์˜ฌ๋ผ์˜ค๊ณ  ์žˆ๋‹ค!!
๋งˆ์ฐฌ๊ฐ€์ง€๋กœ B3์—์„œ ๋๋‚œ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„๋•Œ, u3๋ถ€ํ„ฐ u4๊นŒ์ง€๋Š” z=1์—์„œ z=0์œผ๋กœ Linearํ•˜๊ฒŒ ๋‹ค์‹œ ๋‚ด๋ ค๊ฐ€๋Š” ๋ชจ์Šต์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
์ด๊ฒƒ์ด Periodic B-spline์ด ์–‘ ๋์ ์—์„œ๋ถ€ํ„ฐ ๊ทธ๋ ค์ง€์ง€ ์•Š๋Š” ์ด์œ ๋‹ค.
๋˜ํ•œ, ์–‘ ๋์ ์„ ์—ฐ๊ฒฐํ–ˆ์„ ๊ฒฝ์šฐ ํ•ด๋‹น Basis๊ฐ€ ์ƒํ˜ธ๋ณด์™„๋˜์–ด ์Šคํ”Œ๋ผ์ธ์ด ์—ฐ๊ฒฐ๋œ๋‹ค๋Š” ์ ์ด ์ด ์Šคํ”Œ๋ผ์ธ์ด Periodicํ•จ์„ ๋ณด์ด๋Š” ๋˜ ๋‹ค๋ฅธ ์—ด์‡ ์ž„์„ ๋ณด์—ฌ์ค€๋‹ค.
Uniform knot vector๋Š” ๋ฐ˜๋“œ์‹œ ๊ฐ™์€ ๊ฐ„๊ฒฉ์œผ๋กœ ์กด์žฌํ•œ๋‹ค. Control Point ์œ„์— ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉฐ, knot vector์˜ ๊ฐœ์ˆ˜๋Š” degree + Control Point + 1๊ฐœ๋กœ ์ •ํ•ด์ง„๋‹ค.

Bezier Curve VS B-Spline

์ด๋ ‡๊ฒŒ ๋ณด๋ฉด B์Šคํ”Œ๋ผ์ธ์€ ๋ฒ ์ง€์— ์ปค๋ธŒ๋ž‘ ์•„๋ฌด ๊ด€๋ จ์—†๋Š” ์‹ ์ข… ์ปค๋ธŒ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ๋†€๋ž๊ฒŒ๋„ B-Spline์€ ์ผ์ข…์˜ Bezier Curve์˜ ์ผ๋ฐ˜ํ™”๋œ ๋ฒ„์ ผ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ณก์„ ์˜ ์–ด๋Š ํ•œ ์ง€์  t์—์„œ ์ขŒํ‘œ๊ฐ’์„ ๊ณ„์‚ฐํ•  ๋•Œ, n๊ฐœ์˜ Control Point์˜ ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์œผ๋กœ ๊ณ„์‚ฐํ•œ๋‹ค๋Š” ์ ์—์„œ Bezier Curve์™€ B Spline์€ ๊ฐ™์€ ํŠน์ง•์„ ๊ณต์œ ํ•œ๋‹ค.

Reference

[์ž‘์„ฑ์ค‘] B-Spline์ด๋ž€?
Spline์˜ ์ •์˜์™€ ์†์„ฑ What is spline? ์Šคํ”Œ๋ผ์ธ(Spline) ์ด๋ž€ ์›๋ž˜ "๋ชฉ์ˆ˜๋“ค์ด ๋ถ€๋“œ๋Ÿฌ์šด ๊ณก์„ ์„ ๊ธ‹๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋˜ ์–‡์€ ๊ธˆ์† ๋ " ๋ผ๊ณ  ํ•œ๋‹ค.[4] ๊ทธ๋Ÿฌ๋‚˜ ํ˜„๋Œ€์—๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ œ์–ด์ (CP, Control Point)์— ์˜ํ–ฅ์„ ๋ฐ›๋Š” ๋‹คํ•ญ์‹์œผ๋กœ ํ‘œํ˜„๋œ ๊ณก์„ ์ด๋ผ๊ณ ๋„ ๋งํ•œ๋‹ค. ๋Œ€์ถฉ ์ƒ์ƒ์„ ํ•˜๋ฉด ๊ธด ์ฒ ์‚ฌ๋ฅผ ๊บพ์ง€ ์•Š์œผ๋ฉด์„œ ์ค‘๊ฐ„ ์ค‘๊ฐ„ ์›ํ•˜๋Š” ์œ„์น˜์— ๊ณ ์ •ํ•˜๋ฉด ์ฒ ์‚ฌ์˜ ๊ฐ•์„ฑ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ spline ๊ณก์„ ์ด ๋‚˜์˜จ๋‹ค. Control Point, Order, Degree and Segment ์ œ์–ด์ ์€ ๊ณก์„ ์˜ ๋ชจ์–‘์„ ์ œ์–ดํ•˜๋Š” ํŠน์ง•์ ์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ ์˜ ์ถ”๊ฐ€, ์‚ญ์ œ, ๋ณ€๊ฒฝ ๋“ฑ์„ ํ†ตํ•ด์„œ ๊ณก์„ ์˜ ํ˜•์ƒ์„ ์ œ์–ดํ•œ๋‹ค. ์Šคํ”Œ๋ผ์ธ ํ•จ์ˆ˜์˜ ์œ„์ˆ˜(Order) $k$๋Š” ๋‹คํ•ญ์‹ ๊ทผ์‚ฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ ์˜ ๊ฐฏ์ˆ˜์ด๋ฉฐ ์ฐจ์ˆ˜(D..
Next chapter