• 검색 결과가 없습니다.

Computer aided ship design Part 1. Curve & Surface

N/A
N/A
Protected

Academic year: 2024

Share "Computer aided ship design Part 1. Curve & Surface"

Copied!
35
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

Computer aided ship design Computer aided ship design

Part 1. Curve & Surface Part 1. Curve & Surface

[2008][02-1][02-2]

Computer aided ship design Computer aided ship design

Part 1. Curve & Surface Part 1. Curve & Surface

September 2008 Prof. Kyu-Yeul Lee

Department of Naval Architecture and Ocean Engineering,

Seoul National University of College of Engineering

(2)

2.3.5 B

2.3.5 B--spline curve spline curve Interpolation Interpolation

2.3.5.1 Determine # of curve segments & Knots values 2.3.5.2 Problem definition of B-spline curve interpolation

2.3.5.3 Determine Bezier end control points by end tangent vectors 2.3.5.4 Determine Bezier control points by C

1

continuity condition 2.3.5.5 Determine B-spline control points by C

2

continuity condition 2.3.5.6 Tridiagonal matrix 해법을 이용한 B-spline 곡선 조정점 결정 2.3.5.7 Bessel end condition

2.3.5.8 Sample code of cubic B-spline curve interpolation 2.3.5.1 Determine # of curve segments & Knots values 2.3.5.2 Problem definition of B-spline curve interpolation

2.3.5.3 Determine Bezier end control points by end tangent vectors 2.3.5.4 Determine Bezier control points by C

1

continuity condition 2.3.5.5 Determine B-spline control points by C

2

continuity condition 2.3.5.6 Tridiagonal matrix 해법을 이용한 B-spline 곡선 조정점 결정 2.3.5.7 Bessel end condition

2.3.5.8 Sample code of cubic B-spline curve interpolation

(3)

Example of B

Example of B--spline spline Interpolation Interpolation

3

(4)

2.3.5.1 Determine # of Bezier curve segment & Knot value (1) 2.3.5.1 Determine # of Bezier curve segment & Knot value (1)

¡ Given: fitting points P

i

and corresponding parameter t

i

where, and

¡ First, determine # of Bezier curve segment and its knots m

i = 0 , 1 ,..., t

0

= 0 , t

m

= 1 ,

Given:

Find:

곡선 상의 점pi, ti 곡선의 놋트uj

양끝단의 접선 벡터t0, t1

곡선 상의 점pi을 지나고 C2 연속 조건을 만족하는 3차B-spline 곡선 r(u) (B-spline 조정점: di)

Computer Aided Ship Design 2008

Computer Aided Ship Design 2008 –– PART I: Curve & SurfacePART I: Curve & Surface

4

P 4

P 0

P 1

0

= 0 t

3 .

1

= 0

t t

4

= 0 . 85

P 2

5 .

2

= 0 t

P 3

7 .

3

= 0 t

P 5

0 .

5

= 1 t

¡ 3: degree

¡ 2: # of Bezier curve segments

¡ # of control points

= 4 + (2-1) = 5

(5)

2.3.5.1 Determine # of Bezier curve segment & Knot value (2) 2.3.5.1 Determine # of Bezier curve segment & Knot value (2)

¡ Given: fitting points P

i

and corresponding parameter t

i

where, and

¡ First, determine # of Bezier curve segment and its knots m

i = 0 , 1 ,..., t

0

= 0 , t

m

= 1 ,

Given:

Find:

곡선 상의 점pi, ti 곡선의 놋트uj

양끝단의 접선 벡터t0, t1

곡선 상의 점pi을 지나고 C2 연속 조건을 만족하는 3차B-spline 곡선 r(u) (B-spline 조정점: di)

5

P 4

P 0

P 1

0

= 0 t

3 .

1

= 0

t t

4

= 0 . 85

P 2

5 .

2

= 0 t

P 3

7 .

3

= 0 t

P 5

0 .

5

= 1 t

¡ 3: degree

¡ 3: # of Bezier curve segments

¡ # of control points

= 4 + (3-1) = 6

¡ How we determine Knots ? (= start / end points of each

cubic Bezier curve)

(6)

2.3.5.1 Determine # of Bezier curve segment & Knot value (3) 2.3.5.1 Determine # of Bezier curve segment & Knot value (3)

¡ Given: fitting points P

i

and corresponding parameter t

i

where, and

¡  determine # of Bezier curve segment to be (# of fitting point -1)

¡ ‚ We can determine knots to be the same as the parameters t

i

¡ ƒ How about the B-spline control points ? m

i = 0 , 1 ,..., t

0

= 0 , t

m

= 1 ,

Computer Aided Ship Design 2008

Computer Aided Ship Design 2008 –– PART I: Curve & SurfacePART I: Curve & Surface

6

P 4

P 0

P 1

0

= 0 t

3 .

1

= 0

t t

4

= 0 . 85

P 2

5 .

2

= 0 t

P 3

7 .

3

= 0 t

P 5

0 .

5

= 1

¡ 3: degree

t

¡ 5: # of Bezier curve segments

¡ # of control points

= 4 + (5-1) = 8

1

= 0

u

-

u

3

= 0 . 3 u

7

= 1

u

10

u

u

2 9

u

8

u u

10

5 .

4

= 0

u u

5

= 0 . 7 u

6

= 0 . 85

(7)

2.3.5.2 Problem definition of cubic B

2.3.5.2 Problem definition of cubic B--spline curve interpolation spline curve interpolation

p

1

p

4

p

3

p

2

d

2

d

3

d

4

d

5

d

6

Given:

Find:

곡선 상의 점pi, ti 곡선의 놋트uj

양끝단의 접선 벡터t0, t1

곡선 상의 점pi을 지나고 C2 연속 조건을 만족하는 3차B-spline 곡선 r(u) (B-spline 조정점: di)

7

¡ 3: degree

¡ 5: # of Bezier curve segments

¡ # of knot = (5-1) + 2(3+1)

¡ # of control points

= 4 + (5-1) = (3+1) + (5-1)

p

0

p

5

u

0

Δ

2

u

1

u

2

u

-1

u

3

Δ

3

u

4

Δ

4

u

5

Δ

5

u

6

u

7

u

8

u

9

Δ

6

u

10

d

0

d

1

d

6

d

7

u

가정: 각 곡선 세그먼트는3차Bezier Curve 이다.

연결점에서는C1, C2 연속조건을 만족한다.

(8)

2.3.5.3

2.3.5.3 Determine Bezier end

control points by end tangent vectors

p

1

p

2

p

4

d

2

d

3

d

4

d

5

p

3 9

= b

12

= b b

6

=

b

3

=

t 1

t 0

곡선 상의 점pi, ti 곡선의 놋트uj

양끝단의 접선 벡터t0, t1

곡선 상의 점pi을 지나고 C2 연속 조건을 만족하는 3차B-spline 곡선 r(u) (B-spline 조정점: di)

Computer Aided Ship Design 2008

Computer Aided Ship Design 2008 –– PART I: Curve & SurfacePART I: Curve & Surface

8

u

-1

u

3

u

4

u

5

u

6

u

0

u

1

Δ

2

Δ

3

Δ

4

Δ

5

u

7

u

8

u

9

Δ

6

1 0

t b

b b

t b

t b

b b

t b

, 3 ) (

3

, 3 ) (

3

6 15

14 6

14 15

1

2 0

1 2

0 1

0

- D D =

= -

+ D D =

= -

u

2

u

10

d

0

d

1 6

d

d

7

= =

b

0

= b

15

1

=

b = b

14

p

0

= p

5

: Given or Known values

(9)

2.3.5.4

2.3.5.4 Determine Bezier control points by C 1 continuity condition

Δ

4

Δ

5

Δ

6

Δ

5

Δ

4

Δ

3

Δ

3

Δ

2

3

1

b

p =

6

2

b

p = p

3

= b

9

12

4

b

p = b

2

b

4

b

5

b

7

b

8

b

10

b

11

b

13

13 6 5

5 11

6 5

6 12

4

10 5 4

4 8

5 4

5 9

3

7 4 3

3 5

4 3

4 6

2

4 3 2

2 2

3 2

3 3

b b

b P

b b

b P

b b

b P

b b

b P

1

D + D + D D

+ D

= D

=

D + D + D D

+ D

= D

=

D + D + D D

+ D

= D

=

D + D + D D

+ D

= D

=

Given: Find:

곡선 상의 점pi, ti 곡선의 놋트uj

양끝단의 접선 벡터t0, t1

곡선 상의 점pi을 지나고 C2 연속 조건을 만족하는 3차B-spline 곡선 r(u) (B-spline 조정점: di)

9

u

-1

u

3

u

4

u

5

u

6

u

0

u

1

Δ

2

Δ

3

Δ

4

Δ

5

u

7

u

8

u

9

Δ

6

0

0

b

p =

3

1

b

p =

15

5

b

p = b

1

b

2

b

14

6 5 12

13 11

12

5 4 9

10 8

9

4 3 6

7 5

6

3 2 3

4 2

3

: )

( : ) (

: )

( : ) (

: )

( : ) (

: )

( : ) (

D D

= -

-

D D

= -

-

D D

= -

-

D D

= -

-

b b b

b

b b b

b

b b b

b

b b b

b

u

2

u

10

13 6 5

5 11

6 5

6 12

4

10 5 4

4 8

5 4

5 9

3

7 4 3

3 5

4 3

4 6

2

4 3 2

2 2

3 2

3 3

b b

b P

b b

b P

b b

b P

b b

b P

1

D + D + D D

+ D

= D

=

D + D + D D

+ D

= D

=

D + D + D D

+ D

= D

=

D + D + D D

+ D

= D

=

(10)

2.3.5.5

2.3.5.5 Determine B-spline control points by C 2 continuity condition (1)

Δ

4

Δ

5

Δ

6

Δ

5

Δ

4

Δ

3

Δ

3

Δ

2

b

10

b

11

3

1

b

p =

6

2

b

p = p

3

= b

9

12

4

b

p = b

2

b

4

b

5

b

7

b

8

b

13

b

14

Δ

2

Δ

3

Δ

4

Δ

3

Δ

2

Δ

4

Δ

3

Δ

4

Δ

5

Δ

6

Δ

5

d

2

d

3

d

4

d

5

d

6

Δ

5

Δ

6

1 1

0 0 0

d b

P d b

=

=

=

3 4 3 2

2 2

4 3 2

4 3 4

2 3 2

2 1

3 2

3 2

} {

} {

} {

} {

d d

b

d d

b

D + D + D + D D + D + D

D +

= D

D + D + D D + D

= D

곡선 상의 점pi, ti 곡선의 놋트uj

양끝단의 접선 벡터t0, t1

곡선 상의 점pi을 지나고 C2 연속 조건을 만족하는 3차B-spline 곡선 r(u) (B-spline 조정점: di)

Computer Aided Ship Design 2008

Computer Aided Ship Design 2008 –– PART I: Curve & SurfacePART I: Curve & Surface

10 0

0

b

p = p

5

= b

15

b

1

b

2

b

14

Δ

2

d

0

d

1

d

6

d

7

u-1

u

3 u4 u5 u6

u0 u1

Δ2 Δ3 Δ4 Δ5 u7

u8 u9 Δ6

u2 u10

3 4 3 2

2 2

4 3 2

4 3 4

2 3 2

2 1

3 2

3 2

} {

} {

} {

} {

d d

b

d d

b

D + D + D + D D + D + D

D +

= D

D + D + D D + D

= D

4 5 4 3

3 3

5 4 3

5 4 7

3 4 3 2

3 2 2

4 3 2

4 5

} {

} {

} {

} {

d d

b

d d

b

D + D + D + D D + D + D

D +

= D

D + D + D

D + + D

D + D + D

= D

5 6 5 4

4 4

6 5 4

6 5 10

4 5 4 3

4 3 3

5 4 3

5 8

} {

} {

} {

} {

d d

b

d d

b

D + D + D + D D + D + D

D +

= D

D + D + D

D + + D

D + D + D

= D

6 6 5

5 5

6 5

6 13

5 6 5 4

5 4 4

6 5 4

6 11

} {

} {

} {

} {

d d

b

d d

b

D + D + D D + D

= D

D + D + D

D + + D

D + D + D

= D

5 7 15

6 14

p d b

d b

=

=

=

(11)

2.3.5.5

2.3.5.5 Determine B-spline control points by C 2 continuity condition (2)

5 7

15

6 14

6 6 5

5 5

6 5

6 13

5 6 5

4

5 4

4 6 5

4

6 11

5 6 5

4

4 4

6 5

4

6 5

10

4 5 4

3

4 3

3 5 4

3

5 8

4 5 4

3

3 3

5 4

3

5 4

7

3 4 3

2

3 2

2 4 3

2

4 5

} {

} {

} {

} {

} {

} {

} {

} {

} {

} {

} {

} {

p d

b

d b

d d

b

d d

b

d d

b

d d

b

d d

b

d d

b

=

=

=

D + D + D D

+ D

= D

D + D + D

D + + D

D + D + D

= D

D + D + D + D D

+ D + D

D +

= D

D + D + D

D + + D

D + D + D

= D

D + D + D + D D

+ D + D

D +

= D

D + D + D

D + + D

D + D + D

= D

C

1

, C

2

조건을 이용하여 P

i

에 관한 식 유도

13 6 5

5 11

6 5

6 12

4

10 5 4

4 8

5 4

5 9

3

7 4 3

3 5

4 3

4 6

2

4 3 2

2 2

3 2

3 3

b b

b P

b b

b P

b b

b P

b b

b P

1

D + D + D D

+ D

= D

=

D + D + D D

+ D

= D

=

D + D + D D

+ D

= D

=

D + D + D D

+ D

= D

=

Given:

곡선 상의 점pi, ti 곡선의 놋트uj

양끝단의 접선 벡터t0, t1

Find:

곡선 상의 점pi을 지나고 C2 연속 조건을 만족하는 3차B-spline 곡선 r(u) (B-spline 조정점: di)

11 5

7 15

6 14

6 6 5

5 5

6 5

6 13

5 6 5

4

5 4

4 6 5

4

6 11

5 6 5

4

4 4

6 5

4

6 5

10

4 5 4

3

4 3

3 5 4

3

5 8

4 5 4

3

3 3

5 4

3

5 4

7

3 4 3

2

3 2

2 4 3

2

4 5

} {

} {

} {

} {

} {

} {

} {

} {

} {

} {

} {

} {

p d

b

d b

d d

b

d d

b

d d

b

d d

b

d d

b

d d

b

=

=

=

D + D + D D

+ D

= D

D + D + D

D + + D

D + D + D

= D

D + D + D + D D

+ D + D

D +

= D

D + D + D

D + + D

D + D + D

= D

D + D + D + D D

+ D + D

D +

= D

D + D + D

D + + D

D + D + D

= D

13 6 5

5 11

6 5

6 12

4

10 5 4

4 8

5 4

5 9

3

7 4 3

3 5

4 3

4 6

2

4 3 2

2 2

3 2

3 3

b b

b P

b b

b P

b b

b P

b b

b P

1

D + D + D D

+ D

= D

=

D + D + D D

+ D

= D

=

D + D + D D

+ D

= D

=

D + D + D D

+ D

= D

=

3 4 3

2

2 2

4 3

2

4 3

4

2 3 2

2 1

3 2

3 2

1 1

0 0

0

} {

} {

} {

} {

d d

b

d d

b

d b

P d

b

D + D + D + D D

+ D + D

D +

= D

D + D + D D

+ D

= D

=

=

=

(12)

2.3.5.5

2.3.5.5 Determine B-spline control points by C 2 continuity condition (3)

3 1 2 1 1 1

3 2 2 2 3 2 4

3 3 2 2 4 3 2 3 2

1 3 2 4 3 2 2 3 4 3 2 3 2 1

] ) ( ) /(

)}

)(

( ) (

{

) /(

) (

) ) [(

)(

(

1

d d

d

d d

d P

g b

a + +

=

D + D

+ D D

+ D D + D D + D + D + D D D +

D + D D + D + D D D

+ D + D D +

= D

4 2 3 2 2 2 4 2 3 3 5 4 3

3 2 4 2 2 4 5 4 3 4 3 2

] ) ( )}

(

) (

{ )

) [(

)(

(

1

d d

d d

d

d P

g b

a + +

= D

+ D

+ D D

+ D + D D + D D

+ D + D D +

= D

5 3 4 3 3 3 5 6 5 4

5 4 3 2 4 4 6 5 4 5

4 3 6 5 4

6 5 4 4 3 5 3 2 5 5 4 3 5 4 3

] ) /(

) (

) ( ) /(

)}

)(

(

) )(

( { )

) [(

)(

(

1

d d

d d

d

d P

g b

a + +

= D

+ D + D

D + D + D D + D

+ D + D D

+ D + D D + D D +

D + D + D D + D D + D D

+ D + D D +

= D

) )(

(

) (

) /(

)} (

) (

) (

) { (

) )(

(

) (

2 1 3 2 1

2 1

2 1 3

2 1

3 2 1 2

1 1 2

2 1 2 1

2 2

+ + + + +

+

+ + +

+ +

+ + + +

+ + +

+ + + +

+

D + D D + D + D

= D

D + D D

+ D + D

D + D + D

D + D + D

D + D

= D

D + D D + D + D

= D

i i i i i

i i

i i i

i i

i i i i

i i

i i i i

i i i i i

i i

g b a

곡선 상의 점pi, ti 곡선의 놋트uj

양끝단의 접선 벡터t0, t1

곡선 상의 점pi을 지나고 C2 연속 조건을 만족하는 3차B-spline 곡선 r(u) (B-spline 조정점: di)

Computer Aided Ship Design 2008

Computer Aided Ship Design 2008 –– PART I: Curve & SurfacePART I: Curve & Surface

7 12

6 5 4 3 2 1 0

6 6 4 4 4

3 3 3

2 2 2

1 1 1 2 2

5 1 4 3 2 1 0 0

1 0 0 0 0 0 0 0

3 0 3

0 0 0 0 0

0 0

0 0 0

0 0 0

0 0

0 0 0 0

0

0 0 0 0 0

0 0 0 0 0 3 0

3

0 0 0 0 0 0 0 1

d d d d d d d d

p t p p p p t p

D D - D

D -

=

g b a

g b a

g b a

g b a

5 3 4 3 3 3 5 6 5 4

5 4 3 2 4 4 6 5 4 5

4 3 6 5 4

6 5 4 4 3 5 3 2 5 5 4 3 5 4 3

] ) /(

) (

) ( ) /(

)}

)(

(

) )(

( { )

) [(

)(

(

1

d d

d d

d

d P

g b

a + +

= D

+ D + D

D + D + D D + D

+ D + D D

+ D + D D + D D +

D + D + D D + D D + D D

+ D + D D +

= D

6 4 5 4 4 4 6 6 5 4 2 5

5 6 5 4 6 5 5 4 6

4 2 6 6 5 4 6 5 4

] ) (

) (

)}

( )

( {

) ) [(

)(

(

1

d d

d d

d

d P

g b

a + +

= D

+ D + D D +

D + D + D D D + D + D D

+ D D

+ D + D D +

= D

주어진 것 구해야 하는 것

(13)

2.3.5.6 Tridiagonal matrix

2.3.5.6 Tridiagonal matrix 해법을 해법을 이용한 이용한 B B--spline spline 곡선 곡선 조정점 조정점 ( ) ( ) 결정

결정 (1) (1)

7 6 5 4 3 2 1 0

6 6

4 4

4

3 3

3 2 2 2

1 1

1 2 2

5 1 4 3 2 1 0 0

1 0

0 0

0 0

0 0

3 0 3

0 0

0 0

0

0 0

0 0

0

0 0

0 0

0

0 0

0 0

0

0 0

0 0

0

0 0

0 0

0 3 0

3

0 0

0 0

0 0

0 1

d d d d d d d d

p t p p p p t p

D D

- D

D -

=

g b

a g b a

g b a

g b a

d i

13 7

6 5 4 3 2 1 0

6 6

4 4

4

3 3

3 2 2 2

1 1

1 2 2

5 1 4 3 2 1 0 0

1 0

0 0

0 0

0 0

3 0 3

0 0

0 0

0

0 0

0 0

0

0 0

0 0

0

0 0

0 0

0

0 0

0 0

0

0 0

0 0

0 3 0

3

0 0

0 0

0 0

0 1

d d d d d d d d

p t p p p p t p

D D

- D

D -

=

g b

a g b a

g b a

g b a

AX D =

D

= = A = X

주어진 것 계산할 수 있는 것 구해야 하는 것

D A

X = - 1

그런데 행렬 A가 Tri-diagonal matrix이므로 간단하게 A

-1

를 계산할 수 있음

(14)

2.3.5.6 Tridiagonal matrix

2.3.5.6 Tridiagonal matrix 해법을 해법을 이용한 이용한 B B--spline spline 곡선 곡선 조정점 조정점 ( ) ( ) 결정

결정 (2) (2)

d i

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

- -

-

n n

n n

n

b a

c b

a c

b a

c b

a c b

0 0

0 0

0 0

1 1

1 2

2 2

1 1

1 0 0

O O

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

- n n

x x

x x x

1 2 1 0

M M

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

=

- n n

d d

d d d

1 2 1 0

M M

d Ax =

대각 성분과 그 위 / 아래 , 좌 / 우 성분만 0 이 아닌 값이고 , 나머지 성분은 0 값인 행렬 즉, 대각 성분을 중심으로 3개의 성분만 0이 아닌 값 Æ Tri + Diagonal

대각 성분과 그 위 / 아래 , 좌 / 우 성분만 0 이 아닌 값이고 , 나머지 성분은 0 값인 행렬 즉, 대각 성분을 중심으로 3개의 성분만 0이 아닌 값 Æ Tri + Diagonal

Tridiagonal matrix

LU A =

ü

ü ? ? ü ü ü

ü ü ü ü ü

를 과 의 곱으로 분해

A L U

Computer Aided Ship Design 2008

Computer Aided Ship Design 2008 –– PART I: Curve & SurfacePART I: Curve & Surface

14

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

- -

-

n n

n n

n

b a

c b

a c

b a

c b

a c b

0 0

0 0

0 0

1 1

1 2

2 2

1 1

1 0 0

O O

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

- n n

x x

x x x

1 2 1 0

M M

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

=

- n n

d d

d d d

1 2 1 0

M M

A x = d

d LUx =

d Ly =

y Ux =

ü

ü !! ü ü ü

ü ? ? !!

와 를 알고 있을 때 , 구하기

A d x

를 과 의 곱으로 분해

A L U

를 로 치환

Ux y

를 과 의 곱으로 분해

A L U

를 만족하는 구하기

d

Ly = y

를 만족하는 를 구하면 , 곧 를 만족하는 를 구하는 것임

y

Ux = x Ax = d x

(15)

2.3.5.6 Tridiagonal matrix

2.3.5.6 Tridiagonal matrix 해법을 해법을 이용한 이용한 B B--spline spline 곡선 곡선 조정점 조정점 ( ) ( ) 결정

결정 (3) (3)

d i

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

- -

-

n n

n n

n

b a

c b

a c b a

c b a

c b

0 0

0 0

0 0

1 1

1 2

2 2

1 1 1

0 0

O O

LU A =

① ü ü ü ü ü ü

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

=

- -

n n

n n

b a

b a

b a

b a b

0

0 0

0 0

0 0

1 1

2 2 1 1 0

O O

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

1 0 1 0 0 1

0

0 1

0

0 1

3 2 1

g

n

g g g

O O

15

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

- -

-

n n

n n

n

b a

c b

a c b a

c b a

c b

0 0

0 0

0 0

1 1

1 2

2 2

1 1 1

0 0

O O

A = L

d Ax =

LU A =

d LUx =

y Ux = d Ly =

ü ü ?? üü

ü

ü üü üü

ü

ü !! üü ü ü

? ?

!!

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

=

- -

n n

n n

b a

b a

b a

b a b

0

0 0

0 0

0 0

1 1

2 2 1 1 0

O O

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

1 0 1 0 0 1

0

0 1

0

0 1

3 2 1

g

n

g g g

O O

U

0 0

= b

b c

0

= b

0

g

1

1 1

= a

a b

1

= a

1

g

1

+ b

1

c

1

= b

1

g

2

2 2

= a

a b

2

= a

2

g

2

+ b

2

c

2

= b

2

g

3

1

1 -

-

=

n

a

n

a b

n-1

= a

n-1

g

n-1

+ b

n-1

c

n-1

= b

n-1

g

n n

a

n

= a b

n

= a

n

g

n

+ b

n

M M

M

ü

ü üü üü üü üü ü

ü üü üü üü üü üü üü

i i

= a a

1 1 1

1 + + +

+

=

i

-

i i

i

b a g

b

i i i

c g

+1

= b

n i = 1 , L ,

1 , ,

0 -

= n

i L

0

with b

0

= b

1 , ,

0 -

= n

i L

(16)

2.3.5.6 Tridiagonal matrix

2.3.5.6 Tridiagonal matrix 해법을 해법을 이용한 이용한 B B--spline spline 곡선 곡선 조정점 조정점 ( ) ( ) 결정

결정 (4) (4)

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

- -

n n

n n

b a

b a

b a

b a b

0

0 0

0 0

0 0

1 1

2 2 1 1 0

O O

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

- n n

y y

y y y

1 2 1 0

M M

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

=

- n n

d d

d d d

1 2 1 0

M M

d Ly =

② ü ü !! ü ü

d i

Computer Aided Ship Design 2008

Computer Aided Ship Design 2008 –– PART I: Curve & SurfacePART I: Curve & Surface

16

L =

d Ax =

LU A =

d LUx =

y Ux = d Ly =

ü ü ?? üü

ü

ü üü üü

ü

ü !! üü ü ü

? ?

!!

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

- -

n n

n n

b a

b a

b a

b a b

0

0 0

0 0

0 0

1 1

2 2 1 1 0

O O

d

i i i i i

y y d

b a

-1

= -

n i = 1 , L ,

0 0

with

0

b y = d ú

ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

- n n

y y

y y y

1 2 1 0

M M

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

=

- n n

d d

d d d

1 2 1 0

M M

y

0 0 0

y = d b

1 1 1 0

1

y + b y = d a

2 2 2 1

2

y + b y = d a

M

1 1

1 2

1 - - - -

- n

+

n n

=

n

n

y b y d

a

n n n n

n

y

-

+ b y = d a

1

ü ü ü

ü

!!

ü

ü

!!

üü

!!

üü

Forward

substitution

(17)

2.3.5.6 Tridiagonal matrix

2.3.5.6 Tridiagonal matrix 해법을 해법을 이용한 이용한 B B--spline spline 곡선 곡선 조정점 조정점 ( ) ( ) 결정

결정 (5) (5)

y Ux =

③ ü ü ? ? !!

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

1 0 1 0 0 1

0

0 1

0

0 1

3 2 1

g

n

g g g

O O

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

- n n

x x

x x x

1 2 1 0

M M

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

=

- n n

y y

y y y

1 2 1 0

M M

d i

17

=

d Ax =

LU A =

d LUx =

y Ux = d Ly =

ü ü ?? üü

ü

ü üü üü

ü

ü !! üü ü ü

? ?

!!

1 1 +

-

+

=

i i i

i

y x

x g

0 , , 1 L -

= n i

n

n

y

x = with

y

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

1 0 1 0 0 1

0

0 1

0

0 1

3 2 1

g

n

g g g

O O

U

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

- n n

x x

x x x

1 2 1 0

M M

x

ú ú ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê ê ê

ë é

=

- n n

y y

y y y

1 2 1 0

M M

0 1 0

0

x y

x + g =

1 2 1

1

x y

x + g =

2 3 2

2

x y

x + g =

1 1

1 - -

-

+

n n

=

n

n

x y

x g

n

n

y

x = M

? !!

?

? !!

ü

?

?

ü

?

Backward

substitution

(18)

2.3.5.7 Bessel End Condition (1) 2.3.5.7 Bessel End Condition (1)

¡ B-spline curve interpolation 에서 양끝점에서의 접선벡터 t

0

, t

1

이 주어지지 않았을 때 , (1) 곡선의 양끝의 연속된 세 점으로부터 2차 곡선(quadratic curve)을 생성하고,

(2) 생성된 2 차 곡선의 양 끝점에서의 1 차 미분값을 우리가 생성하고자 하는 B-spline curve 의 양 끝점에서의 접선 벡터로 가정하는 방법

d

2

d

4

t

0

t

1

Computer Aided Ship Design 2008

Computer Aided Ship Design 2008 –– PART I: Curve & SurfacePART I: Curve & Surface

18

p

0

= d

0

d

1

p

1

p

2

d

3

p

3

d

5

p

4

= d

6

u

2

u

3

u

4

u

5

u

6

u

1

u

0

u u

87

Δ

2

Δ

3

Δ

4

Δ

5

t

1
(19)

2.3.5.7 Bessel End Condition(2) 2.3.5.7 Bessel End Condition(2)

p

2

p

1

p

m-2

p

m-1

p

0

= d

0

d

1

d

2

p

1

p

2

d

3

p

3

d

4

d

5

p

4

= d

6

u

2

u

3

u

4

u

5

u

6

u

1

u

0

u u

87

Δ

2

Δ

3

Δ

4

Δ

5

t

0

t

1

곡선의 시작 부분 곡선의 끝 부분

19

p

0

u

1

u

2

u

3

D

3

D

2

u

4

u

0

p

m

2 -

u

K 1 -

u

K 5

K-

u D

K-5

u

K-4

D

K-4

u

K-3

) ) (

) (

) (

( 2

2

3 2 3

2 1

3 2

3 2 0

3 2 2

3

2

p p p

t D D + D

- D D

D D + + D

D + D D

D + - D

s

=

) ) (

) 2

(

) (

) ( (

4 4

5

5 4

1 4

5

4 5

2 4

5 5

4

m K K

K

K K

m K

K

K K

m K

K K

K e

p

p p

t

- - -

- -

- -

-

- -

- -

- -

-

D D + D

D + + D

D D

D + - D

D + D D

= D

t

0

t 1

(20)

2.3.5.8 Sample code of

2.3.5.8 Sample code of Cubic B Cubic B--spline spline Curve Curve (1) (1)

#ifndef __CubicBspline_h__

#define __CubicBspline_h__

#include "vector.h“

class CubicBsplineCurve { public:

Vector* m_ControlPoint; int m_nControlPoint;

double* m_Knot; int m_nKnot; int m_nDegree;

………

void SetControlPoint(Vector* pControlPoint, int nControlPoint);

void SetKnot(double* pKnot, int nKnot);

Vector CalcPoint(double u);

double N(int d, int i, double u);

void Interpolate(Vector *pFittingPoint, int nFittingPoint);

void Parameterization(int nType, Vector* FittingPoint, int nPoint, double* t);

};

#endif

Computer Aided Ship Design 2008

Computer Aided Ship Design 2008 –– PART I: Curve & SurfacePART I: Curve & Surface

20

#ifndef __CubicBspline_h__

#define __CubicBspline_h__

#include "vector.h“

class CubicBsplineCurve { public:

Vector* m_ControlPoint; int m_nControlPoint;

double* m_Knot; int m_nKnot; int m_nDegree;

………

void SetControlPoint(Vector* pControlPoint, int nControlPoint);

void SetKnot(double* pKnot, int nKnot);

Vector CalcPoint(double u);

double N(int d, int i, double u);

void Interpolate(Vector *pFittingPoint, int nFittingPoint);

void Parameterization(int nType, Vector* FittingPoint, int nPoint, double* t);

};

#endif

(21)

2.3.5.8 Sample code of

2.3.5.8 Sample code of Cubic B Cubic B--spline spline Curve Curve (2) (2)

void CubicBsplineCurve::Interpolate(Vector *pFittingPoint, int nFittingPoint) {

// Generate Knot

if(m_Knot) delete[] m_Knot;

m_nKnot = (m_nFittingPoint - 2) + 2*(3+1);

m_Knot = new double [m_nKnot];

// Use Chord length or Centripetal method

……

//--- // Generate Matrix : (L+1) * (L+1)

int L = m_nFittingPoint + 1; // (L+1)*(L+1) size Matrix

// Fill rhs

Vector* rhs = new Vector[L+1];

for(i = 1; i <= L-1 ; i++) rhs[i] = pFittingPoint[i-1];

// Bessel End condition

rhs[0] = rhs[1]; rhs[L] = rhs[L-1];

rhs[1] = StartTangentByBesselEndCondition; rhs[L-1] = EndTangentByBesselEndCondition;

1.0

0.5

1.5

p

0

p

1

p

2

p

3

Set knot using chord length Set knot using chord length

21 void CubicBsplineCurve::Interpolate(Vector *pFittingPoint, int nFittingPoint)

{

// Generate Knot

if(m_Knot) delete[] m_Knot;

m_nKnot = (m_nFittingPoint - 2) + 2*(3+1);

m_Knot = new double [m_nKnot];

// Use Chord length or Centripetal method

……

//--- // Generate Matrix : (L+1) * (L+1)

int L = m_nFittingPoint + 1; // (L+1)*(L+1) size Matrix

// Fill rhs

Vector* rhs = new Vector[L+1];

for(i = 1; i <= L-1 ; i++) rhs[i] = pFittingPoint[i-1];

// Bessel End condition

rhs[0] = rhs[1]; rhs[L] = rhs[L-1];

rhs[1] = StartTangentByBesselEndCondition; rhs[L-1] = EndTangentByBesselEndCondition;

p

0

p

3

0 .

2 0

1 0 1

=

-

u u u

u u3 =1.0 u4 =1.5

0 .

8 4

7 6 5

= u u u u

1.0 0.5 1.5

(22)

2.3.5.8 Sample code of

2.3.5.8 Sample code of Cubic B Cubic B--spline spline Curve Curve (2) (2)

void CubicBsplineCurve::Interpolate(Vector *pFittingPoint, int nFittingPoint) {

// Generate Knot

if(m_Knot) delete[] m_Knot;

m_nKnot = (m_nFittingPoint - 2) + 2*(3+1);

m_Knot = new double [m_nKnot];

// Use Chord length or Centripetal method

……

//--- // Generate Matrix : (L+1) * (L+1)

int L = m_nFittingPoint + 1; // (L+1)*(L+1) size Matrix

// Fill rhs

Vector* rhs = new Vector[L+1];

for(i = 1; i <= L-1 ; i++) rhs[i] = pFittingPoint[i-1];

// Bessel End condition

rhs[0] = rhs[1]; rhs[L] = rhs[L-1];

rhs[1] = StartTangentByBesselEndCondition; rhs[L-1] = EndTangentByBesselEndCondition;

2 3 2

3 2

1 3

2 3 2

0 3 2

2

3 2

) (

) (

) (

2

p p

p t

D + D D - D

D D

D + + D

D + D D

D + - D

s

=

Bessel End Condition Bessel End Condition

Computer Aided Ship Design 2008

Computer Aided Ship Design 2008 –– PART I: Curve & SurfacePART I: Curve & Surface

22 void CubicBsplineCurve::Interpolate(Vector *pFittingPoint, int nFittingPoint)

{

// Generate Knot

if(m_Knot) delete[] m_Knot;

m_nKnot = (m_nFittingPoint - 2) + 2*(3+1);

m_Knot = new double [m_nKnot];

// Use Chord length or Centripetal method

……

//--- // Generate Matrix : (L+1) * (L+1)

int L = m_nFittingPoint + 1; // (L+1)*(L+1) size Matrix

// Fill rhs

Vector* rhs = new Vector[L+1];

for(i = 1; i <= L-1 ; i++) rhs[i] =

참조

관련 문서