• 검색 결과가 없습니다.

Computer aided ship designComputer aided ship designPart 1. Curve & SurfacePart 1. Curve & Surface

N/A
N/A
Protected

Academic year: 2022

Share "Computer aided ship designComputer aided ship designPart 1. Curve & SurfacePart 1. Curve & Surface"

Copied!
68
0
0

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

전체 글

(1)

Computer aided ship design Computer aided ship design

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

[2008][04-2]

Computer aided ship design Computer aided ship design

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

October 2008 Prof. Kyu-Yeul Lee

Department of Naval Architecture and Ocean Engineering,

Seoul National University of College of Engineering

(2)

Ch 3.

Ch 3. 곡면 곡면(Surfaces) (Surfaces)

3.1 Parametric Surfaces 3.2 Bezier Surfaces

3.3 B-spline surfaces 3.1 Parametric Surfaces 3.2 Bezier Surfaces

3.3 B-spline surfaces

(3)

3.1 Parametric Surfaces

3.1 Parametric Surfaces

(4)

2.1 Parametric Surfaces 2.1 Parametric Surfaces

곡면 양함수

음함수

매개 변수

2 2

2

x y

d

z = ± - -

2 2

2

2

y z d

x + + =

q

q f

q f

sin

cos sin

cos cos

d z

d y

d x

=

=

=

Computer Aided Ship Design 2008

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

4

매개

변수 q

q f

q f

sin

cos sin

cos cos

d z

d y

d x

=

=

=

)) , ( ), , ( ), , (

( x f q y f q z f q r

= r

구를 2개의 매개변수 로

표현하면 간단히 수식화 할 수 있다.

)

,

( f q

(5)

3.2 Bezier surfaces 3.2 Bezier surfaces

3.2.1 Generation of Bezier surfaces by de Casteljau algorithm

3.2.1 Generation of Bezier surfaces

by de Casteljau algorithm

(6)

3.2.1 Generation of Bezier surfaces 3.2.1 Generation of Bezier surfaces

by de

by de Casteljau Casteljau algorithm algorithm

3.2.1.1 Bi-linear Bezier Surface Patch

3.2.1.2 Bi-quadratic Bezier Surface Patch 3.2.1.3 Bi-Cubic Bezier Surface Patch

3.2.1.1 Bi-linear Bezier Surface Patch

3.2.1.2 Bi-quadratic Bezier Surface Patch

3.2.1.3 Bi-Cubic Bezier Surface Patch

(7)

3.2.1.1 Bi

3.2.1.1 Bi--linear Bezier Surface Patch linear Bezier Surface Patch

-- Given: 2x2 Bezier control point Given: 2x2 Bezier control point

-- Find: Points on bi Find: Points on bi--linear Bezier Surface Patch linear Bezier Surface Patch

0

b 0

1

b 0

b 11

v

q

u

v

v - 1

) u 1

( - u b 0 0 + b 1 0

P

u

=

) u 1

( - u b 0 1 + b 1 1

q

u

=

v )

1

( - v +

) , ( v u

r = P

u

q

u

v ) 1 ( - v )

, ( v u

r =

u )

1

( - u b 0 1 + b 1 1

) 1

( - u b 0 0 + ( 1 - v ) u b 1 0 + v

u

u - 1

방법방법: u, v : u, v 방향으로방향으로 ‘de ‘de CasteljauCasteljau algorithm’ algorithm’ 사용사용

Computer Aided Ship Design 2008

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

7

b 10

u P

u

u

u - 1

v

u v

0 1

1

u

v .

) (

1

0

,

1 1 0 0

있다 수

얻을 곡면을

하는 꼭지점으로

을 점

계산하면 를

증가하며 까지

에서 를

1 0 1

0

, b , b , b b

r u,v v u

2x2개의 Bezier 조정점을 이용하여 Bi-linear Interpolation 으로 곡면식을 구할 수 있다.

ú û ù ê ë

é

1 1

0 0

1 0

1 0

b b

b b

ú û ù ê ë

é - u

u) 1

[ ( - 1 v) v ] ( )

, ( v u

r =

(8)

3.2.1.2 Bi

3.2.1.2 Bi--quadratic Bezier Surface Patch quadratic Bezier Surface Patch

-- Given: 3x3 Bezier control point Given: 3x3 Bezier control point

-- Find: Points on bi Find: Points on bi--quadratic Bezier Surface Patch quadratic Bezier Surface Patch

방법방법: u, v : u, v 방향으로방향으로 ‘de ‘de CasteljauCasteljau algorithm’ algorithm’ 사용사용

b

02

b

12

b

22

u

1 u- u

1 u-

u 1 u-

2

p

u

q

u2

2

r

u

b

01

b

11

b

21

u

1 u- u

1 u-

u 1 u-

1

p

u

q

1u

1

r

u

b

10

1 u- u

0

p

u

q

u0

( )

( )

00 10

10 2

0

0 0

1 1

u

u

u u

u u

- -

= +

= +

p q

b b

b b

( )

( )

01 11

11 2

1

1 1

1 1

u

u

u u

u u

- -

= +

= +

p q

b b

b b

( )

( )

02 12

12 2

2

2 2

1 1

u

u

u u

u u

- -

= +

= +

p q

b b

b b

Computer Aided Ship Design 2008

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

8

u

v b

00

b

20

u

1 u- u

1 u-

u 1 u-

0

p

u

q

u0

0

r

u

( )

( )

02 12

12 2

2

2 2

1 1

u

u

u u

u u

- -

= +

= +

p q

b b

b b

( )

0 0u

= 1 - u p

u0

+ u q

u

r

( ) ( )

( ) ( )

( ) ( )

2 2

00 10 20

2 2

01 11 21

2 2

02 12 22

0

1

2

1 2 1

1 2 1

1 2 1

u

u

u

u u u u

u u u u

u u u u

= - + - +

= - + - +

= - + - +

r r

b b b

b b

b b b

r

b

( ) ( )

2

00 10 20

01 11 21

2

02 12 22

0 1 2

1 2 1

u u u

u

u u

u

é ù

é ù é ù -

ê ú

ê ú = ê ú ê - ú

ê ú ê ú

ê ú

ê ú ê ë ú û

ë û ë û

r r

b b

b r

b

b b

b b b

( )

1 1u

= 1 - u p

1u

+ u q

u

r

( )

2 2u

= 1 - u p

u2

+ u q

u

r

(9)

3.2.1.2 Bi

3.2.1.2 Bi--quadratic Bezier Surface Patch quadratic Bezier Surface Patch

-- Given: 3x3 Bezier control point Given: 3x3 Bezier control point

-- Find: Points on bi Find: Points on bi--quadratic Bezier Surface Patch quadratic Bezier Surface Patch

방법방법: u, v : u, v 방향으로방향으로 ‘de ‘de CasteljauCasteljau algorithm’ algorithm’ 사용사용

b

02

b

12

b

22 2

r

u

b

01

b

11

b

21 1

r

u

b

10 1

s

v

0

s

v

v 1 v-

v

1 v-

( u v , )

r

v 1 v-

( )

( )

0 1

1 2

0

1

1 1

u u

v

v u u

v v

v v

= +

= - +

- s

s

r r

r r

( u v , ) ( = 1 - v ) s

0v

+ v s

1v

r

( ) ( )

2

( )

2

2

0 1

1 2 1

, v

u

v v

u

v

u

u v = - r + - + r

r r

( ) ( )

2

( )

2

0 1 2

1 2

, 1

u u u

v v v

v v

u

é ù ê ú

é ù

= ë - - û ê ú

ê ú ë û

r r r r

Computer Aided Ship Design 2008

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

9

u

v b

00 0

b

20

r

u

( ) ( )

2

00 10 20

01 11 21

2

02 12 22

0 1 2

1 2 1

u u u

u

u u

u

é ù

é ù é ù -

ê ú

ê ú = ê ú ê - ú

ê ú ê ú

ê ú

ê ú ê ë ú û

ë û ë û

r r

b b

b r

b

b b

b b b

( ) ( )

2

( )

2

0 1 2

1 2

, 1

u u u

v v v

v v

u

é ù ê ú

é ù

= ë - - û ê ú

ê ú ë û

r r r r

( ) ( ) ( )

( ) ( )

2

00 10 20

2 2

01 11 21

2

02 12 22

1

1 2 1 2 1

,

u

v v v v u u

u v

u

é - ù

é ù

ê ú

ê ú

é ù

= ë - - û ê ú ê - ú

ê ú

ê ú

ë û ë û

b b b

b b b

b b

r

b

3x3개의 조정점을 이용하여

Bi-Quadratic Bezier Patch를 구할 수 있다.

(10)

3.2.1.3 Bi

3.2.1.3 Bi--cubic Bezier Surface Patch cubic Bezier Surface Patch

-- Given: 4x4 Bezier control point Given: 4x4 Bezier control point

-- Find: Points on bi Find: Points on bi--cubic Bezier Surface Patch cubic Bezier Surface Patch

u - 1

u

1 - u

u -

1 u

방법방법: u, v : u, v 방향으로방향으로 ‘de ‘de CasteljauCasteljau algorithm’ algorithm’ 사용사용

Computer Aided Ship Design 2008

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

10

u

u - 1

u u - 1

u 1-u u

u - 1

u v

4x4개의 조정점을 이용하여 Bi-Cubic Bezier Patch를 구할 수 있다.

3

3 0

3

1 1 1 1 3

3 3 3 3 1

0 1 2 3 3

2 2 2 2 3 2

3

3 3 3 3 3 3

( )

( , ) ( ) ( ) ( ) ( ) ( )

( ) ( ) B v u v B u B u B u B u B v

B v B v

é ù

é ù

ê ú

ê ú

ê ú

ê ú

é ù

= ë û ê ú ê ú

ê ú

ê ú

ê ú

ë û ë û

0,0 0,1 0,2 0,

,0 ,1 ,2 ,

,0 ,1 ,2 ,

,0 ,1 ,2 ,

b b b b

b b b b

b b b b b

b b b b

(11)

3.2.1.3 Bi

3.2.1.3 Bi--cubic Bezier Surface Patch cubic Bezier Surface Patch

-- Given: 4x4 Bezier control point Given: 4x4 Bezier control point

-- Find: Points on bi Find: Points on bi--cubic Bezier Surface Patch cubic Bezier Surface Patch

방법방법: u, v : u, v 방향으로방향으로 ‘de ‘de CasteljauCasteljau algorithm’ algorithm’ 사용사용

Computer Aided Ship Design 2008

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

11

u v

4x4개의 조정점을 이용하여 Bi-Cubic Bezier Patch를 구할 수 있다.

3

3 0

3

1 1 1 1 3

3 3 3 3 1

0 1 2 3 3

2 2 2 2 3 2

3

3 3 3 3 3 3

( )

( , ) ( ) ( ) ( ) ( ) ( )

( ) ( ) B v u v B u B u B u B u B v

B v B v

é ù

é ù

ê ú

ê ú

ê ú

ê ú

é ù

= ë û ê ú ê ú

ê ú

ê ú

ê ú

ë û ë û

0,0 0,1 0,2 0,

,0 ,1 ,2 ,

,0 ,1 ,2 ,

,0 ,1 ,2 ,

b b b b

b b b b

b b b b b

b b b b

(12)

3.3 B

3.3 B--spline surfaces spline surfaces

3.3.1 Generation of B-spline surfaces by tensor-product approach

3.3.2 B-spline surface Interpolation 3.3.1 Generation of B-spline surfaces

by tensor-product approach

3.3.2 B-spline surface Interpolation

(13)

3.3.1 Generation of B

3.3.1 Generation of B--spline surfaces spline surfaces by tensor

by tensor--product approach product approach

3.3.1.1 Tensor-product bicubic B-spline surface 3.3.1.2 Programming Guide of Tensor-product bicubic B-spline surface

3.3.1.1 Tensor-product bicubic B-spline surface

3.3.1.2 Programming Guide of Tensor-product

bicubic B-spline surface

(14)

3.3.1.1 Tensor

3.3.1.1 Tensor--product product bicubic bicubic B B--spline spline surface (1) surface (1)

-- Given: Control Points of Given: Control Points of bicubic bicubic B B--spline spline surface surface -- Find: Points on Find: Points on bicubic bicubic B B--spline spline surface surface

¡ Given 5x5 Control Points d

ij

, u-knots, v-knots,

u-degree(=3), v-degree(=3),

¡ Generate start/end moving

curves and directional curves in cubic B-spline form:

d

14

d

44

d

04

d

24

d

34

5=1 v v76

v v8

d

03

d

02

d

01

)

0

( v d

d

11

d

12

)

1

( v d

d

23

d

22

d

21

)

2

( v d

d

33

d

32

)

3

( v d

d

43

d

42

d

0

( ) v = d

00

N

03

( ) v + d

01

N

13

( ) v + d

02

N

23

( ) v + d

03

N

33

( ) v + d

04

N

43

( ) v

( )

10 03

( )

11 13

( )

12 23

( )

13 33

( )

14 43

( )

1

v = N v + d N v + N v + d N v + d N v

d d d

Computer Aided Ship Design 2008

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

14

d

10

d

40

d

00 20

d

d

30

0=0

u u4=0.4 u5=1

u12

u

u3 7

u6 u u8

u

0=0 v

vv21

v3

v4

d

01

d

11

d

31

d

41

d

4

( v )

( )

10 03

( )

11 13

( )

12 23

( )

13 33

( )

14 43

( )

1

v = N v + d N v + N v + d N v + d N v

d d d

( )

20 03

( )

21 13

( )

22 23

( )

23 33

( )

24 43

( )

2

v = N v + d N v + N v + d N v + d N v

d d d

( )

30 03

( )

31 13

( )

32 23

( )

33 33

( )

34 43

( )

3

v = N v + d N v + N v + d N v + d N v

d d d

( )

40 03

( )

41 13

( )

42 23

( )

43 33

( )

44 43

( )

4

v = N v + d N v + N v + d N v + d N v

d d d

( ) ( ) ( ) ( ) ( )

( ) ( ) ( ) ( ) ( )

3

00 01 02 03 04 0

3

10 11 12 13 14 1

3

20 21 22 23 24 2

3

30 31 32 33 34 3

3

40 41 42 43 44

0

2

4 4

1

3

N v N v N v N v N v v

v v v v

é ù

é ù é ù

ê ú

ê ú ê ú

ê ú

ê ú ê ú

ê ú

ê ú = ê ú

ê ú

ê ú ê ú

ê ú

ê ú ê ú

ê ú

ê ú ê ë ú û

ë û ë û

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

(15)

3.3.1.1 Tensor

3.3.1.1 Tensor--product product bicubic bicubic B B--spline spline surface (1) surface (1)

-- Given: Control Points of Given: Control Points of bicubic bicubic B B--spline spline surface surface -- Find: Points on Find: Points on bicubic bicubic B B--spline spline surface surface

¡ Given 5x5 Control Points d

ij

, u-knots, v-knots,

u-degree(=3), v-degree(=3),

¡ Moving curve can be represented in the following form:

d

14

d

44

d

04

d

24

d

34

5=1 v v76

v v8

d

03

d

02

d

01

)

0

( v d

)

1

( v

d d

2

( v )

)

3

( v d

d

43

d

42

) , ( v u r

( ) ( ) ( ) ( ) ( )

( ) ( ) ( ) ( ) ( )

0

3 3 3 3 3

0 4

1 2

1 2

3 4

N u N u N u N3 u N u

v v v v v

é ù

ê ú

ê ú

ê ú

é ù

= ë û ê ú

ê ú

ê ú

ë û

d d d d d

Computer Aided Ship Design 2008

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

15

d

10

d

40

d

00 20

d

d

30

0=0

u u4=0.4 u5=1

u21

u

u3 7

u6 u u8

u

0=0 v

vv21

v3

v4

d

01

d

41

)

4

( v d

[ ]

ú ú ú ú ú ú

û ù

ê ê ê ê ê ê

ë é

ú ú ú ú ú ú

û ù

ê ê ê ê ê ê

ë é

=

) (

) (

) (

) (

) ( )

( ) ( ) ( ) ( ) ( ) , (

3 4 3 3 3 2 3 1 3 0

44 43 42 41 40

34 33 32 31 30

24 23 22 21 20

14 13 12 11 10

04 03 02 01 00

3 4 3

3 3

2 3

1 3

0

v N

v N

v N

v N

v N u

N u N u N u N u N v u

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

r

åå

= =

=

5

0 5

0

3 3

( ) ( )

j i

j i

ij

N u N v d

( )

0

( ) ( )

1

( ) ( )

2

( ) ( ) ( ) ( ) ( ) ( )

3 3 3 3 3

0 1 2 3 3 4 4

, v N u v N u v N u v N u

u v = + +d + +d v N u

r d d d

( ) ( ) ( ) ( ) ( )

( ) ( ) ( ) ( ) ( )

0

3 3 3 3 3

0 4

1 2

1 2

3 4

N u N u N u N3 u N u

v v v v v

é ù

ê ú

ê ú

ê ú

é ù

= ë û ê ú

ê ú

ê ú

ë û

d d d d d

( ) ( ) ( ) ( ) ( )

( ) ( ) ( ) ( ) ( )

3

00 01 02 03 04 0

3

10 11 12 13 14 1

3

20 21 22 23 24 2

3

30 31 32 33 34 3

3

40 41 42 43 44

0

2

4 4

1

3

N v N v N v N v N v v

v v v v

é ù

é ù é ù

ê ú

ê ú ê ú

ê ú

ê ú ê ú

ê ú

ê ú = ê ú

ê ú

ê ú ê ú

ê ú

ê ú ê ú

ê ú

ê ú ê ë ú û

ë û ë û

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

(16)

3.3.1.2 Programming Guide of 3.3.1.2 Programming Guide of Tensor

Tensor--product product bicubic bicubic B B--spline spline surface surface

-- Member Variables of Class Member Variables of Class

class CBsplineSurface {

public:

// member variables int m_nDegree;

double* m_pKnot_U;

int m_nNumOfKnot_U;

double* m_pKnot_V;

int m_nNumOfKnot_V;

Vector** m_pCP;

int m_nNumOfCP_U;

int m_nNumOfCP_V;

// member functions

… };

è 차수

è u 방향 Knot와 개수

è v 방향 Knot와 개수

d10

d40

d00 20

d

d30

0=0

u u4=0.4 u5=1

u21

u

u3 uu76

u8

u

d14

d44

d04

d24

d34

0=0 v v21

v v3

5=1 v v76

v v8

v4

d03

d02

d01

)

0(v d

)

1(v

d d2(v)

)

3(v d

d43

d42

d41

)

4(v d

) , ( vu r

(3차)

(9개)

(9개)

Computer Aided Ship Design 2008

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

16

class CBsplineSurface {

public:

// member variables int m_nDegree;

double* m_pKnot_U;

int m_nNumOfKnot_U;

double* m_pKnot_V;

int m_nNumOfKnot_V;

Vector** m_pCP;

int m_nNumOfCP_U;

int m_nNumOfCP_V;

// member functions

… };

è v 방향 Knot와 개수

è Control Point, u, v 방향 개수 (9개)

(u 방향 5개, v 방향 5개)

(17)

3.3.1.2 Programming Guide of 3.3.1.2 Programming Guide of Tensor

Tensor--product product bicubic bicubic B B--spline spline surface surface

-- Member Functions of Class Member Functions of Class

class CBsplineSurface {

public:

// member variables

// member functions

void SetKnot(double* pKnot_U, int nNumOfKnot_U, double* pKnot_V, int nNumOfKnot_V);

double N(int n, int i, double u, int uv);

Vector GetPoint(double u, double v);

};

d10

d40

d00 20

d

d30

0=0

u u4=0.4 u5=1

u21

u

u3 uu76

u8

u

d14

d44

d04

d24

d34

0=0 v v21

v v3

5=1 v v76

v v8

v4

d03

d02

d01

)

0(v d

)

1(v

d d2(v)

)

3(v d

d43

d42

d41

)

4(v d

) , ( vu r

u 방향 Knot

v 방향 Knot

Computer Aided Ship Design 2008

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

17

class CBsplineSurface {

public:

// member variables

// member functions

void SetKnot(double* pKnot_U, int nNumOfKnot_U, double* pKnot_V, int nNumOfKnot_V);

double N(int n, int i, double u, int uv);

Vector GetPoint(double u, double v);

};

è Knot 설정

(18)

3.3.1.2 Programming Guide of 3.3.1.2 Programming Guide of Tensor

Tensor--product product bicubic bicubic B B--spline spline surface surface

-- Member Functions of Class Member Functions of Class

class CBsplineSurface {

public:

// member variables

// member functions

void SetKnot(double* pKnot_U, int nNumOfKnot_U, double* pKnot_V, int nNumOfKnot_V);

double N(int n, int i, double u, int uv);

Vector GetPoint(double u, double v);

};

d10

d40

d00 20

d

d30

0=0

u u4=0.4 u5=1

u21

u

u3 uu76

u8

u

d14

d44

d04

d24

d34

0=0 v v21

v v3

5=1 v v76

v v8

v4

d03

d02

d01

)

0(v d

)

1(v

d d2(v)

)

3(v d

d43

d42

d41

)

4(v d

) , ( vu r

Computer Aided Ship Design 2008

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

18

class CBsplineSurface {

public:

// member variables

// member functions

void SetKnot(double* pKnot_U, int nNumOfKnot_U, double* pKnot_V, int nNumOfKnot_V);

double N(int n, int i, double u, int uv);

Vector GetPoint(double u, double v);

};

è B-spline Basis Function 계산

B-spline Basis Function 계산

(Cox-de Boor Recurrence Formula)

) ( )

( )

(

1 11

1 1

1

N u

u u

u u u

u N u

u u u

N

in

i n i

n n i

i i n

i n i

i

- + +

- + -

- +

-

- + -

-

= -

î í

ì £ <

=

-

else

0

if ) 1

(

1

0 i i

i

u u u u

N

u, v 방향을 구분하는 flag

(19)

3.3.1.2 Programming Guide of 3.3.1.2 Programming Guide of Tensor

Tensor--product product bicubic bicubic B B--spline spline surface surface

-- Member Functions of Class Member Functions of Class

class CBsplineSurface {

public:

// member variables

// member functions

void SetKnot(double* pKnot_U, int nNumOfKnot_U, double* pKnot_V, int nNumOfKnot_V);

double N(int n, int i, double u, int uv);

Vector GetPoint(double u, double v);

};

d10

d40

d00 20

d

d30

0=0

u u4=0.4 u5=1

u21

u

u3 uu76

u8

u

d14

d44

d04

d24

d34

0=0 v v21

v v3

5=1 v v76

v v8

v4

d03

d02

d01

)

0(v d

)

1(v

d d2(v)

)

3(v d

d43

d42

d41

)

4(v d

) , ( vu r

Computer Aided Ship Design 2008

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

19

class CBsplineSurface {

public:

// member variables

// member functions

void SetKnot(double* pKnot_U, int nNumOfKnot_U, double* pKnot_V, int nNumOfKnot_V);

double N(int n, int i, double u, int uv);

Vector GetPoint(double u, double v);

};

è Parameter u, v에 대한 곡면 상의 점 계산

[ ]

ú ú ú ú ú ú

û ù

ê ê ê ê ê ê

ë é

ú ú ú ú ú ú

û ù

ê ê ê ê ê ê

ë é

=

) (

) (

) (

) (

) ( )

( ) ( ) ( ) ( ) ( )

, (

3 4 3 3 3 2 3 1

3 0

44 43 42 41 40

34 33 32 31 30

24 23 22 21 20

14 13 12 11 10

04 03 02 01 00

3 4 3

3 3

2 3

1 3

0

v N

v N

v N

v N

v N u

N u N u N u N u N v u

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

r

åå

= =

=

5

0 5

0

3

3

( ) ( )

j i

j i

ij

N u N v

d

(20)

3.3.1.2 Programming Guide of 3.3.1.2 Programming Guide of Tensor

Tensor--product product bicubic bicubic B B--spline spline surface surface

-- Member Function Example ‘ Member Function Example ‘GetPoint GetPoint’’

Vector CBsplineSurface::GetPoint(double u, double v) {

// return value

Vector r_u_v(0.0, 0.0, 0.0);

// get curve

for (int i=0; i<m_nNumOfCP_U; i++) {

Vector r_v(0.0, 0.0, 0.0);

for (int j=0; j<m_nNumOfCP_V; j++) {

r_v = r_v + m_pCP[i][j] * N(m_nDegree, j, v, ID_V);

}

r_u_v = r_u_v + N(m_nDegree, i, u, ID_U) * r_v;

}

return r_u_v;

}

è Parameter u, v에 대한 곡면 상의 점 계산

Computer Aided Ship Design 2008

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

20

Vector CBsplineSurface::GetPoint(double u, double v) {

// return value

Vector r_u_v(0.0, 0.0, 0.0);

// get curve

for (int i=0; i<m_nNumOfCP_U; i++) {

Vector r_v(0.0, 0.0, 0.0);

for (int j=0; j<m_nNumOfCP_V; j++) {

r_v = r_v + m_pCP[i][j] * N(m_nDegree, j, v, ID_V);

}

r_u_v = r_u_v + N(m_nDegree, i, u, ID_U) * r_v;

}

return r_u_v;

} [ ]

ú ú ú ú ú ú

û ù

ê ê ê ê ê ê

ë é

ú ú ú ú ú ú

û ù

ê ê ê ê ê ê

ë é

=

) (

) (

) (

) (

) ( )

( ) ( ) ( ) ( ) ( )

, (

3 4 3 3 3 2 3 1

3 0

44 43 42 41 40

34 33 32 31 30

24 23 22 21 20

14 13 12 11 10

04 03 02 01 00

3 4 3

3 3

2 3

1 3

0

v N

v N

v N

v N

v N u

N u N u N u N u N v u

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

r

åå

= =

=

5

0 5

0

3

3

( ) ( )

j i

j i

ij

N u N v

d

) ( d ) ( d ) ( d ) ( d ) ( d ) (

d

0

v =

00

N

03

v +

01

N

13

v +

02

N

23

v +

03

N

33

v +

04

N

43

v

(21)

3.3.2 B

3.3.2 B--spline spline surfaces Interpolation surfaces Interpolation

3.3.2.1 bicubic B-spline surface interpolation 개요

3.3.2.2 bicubic B-spline surface interpolation 상세 과정 3.3.2.3 Sequences of Finding knots

3.3.2.4 Knot 간격차이가 주는 영향

3.3.2.5 Example of bicubic B-spline Surface Interpolation 3.3.2.1 bicubic B-spline surface interpolation 개요

3.3.2.2 bicubic B-spline surface interpolation 상세 과정 3.3.2.3 Sequences of Finding knots

3.3.2.4 Knot 간격차이가 주는 영향

3.3.2.5 Example of bicubic B-spline Surface Interpolation

(22)

p

12

p

10

p

02

p

22

p

01

p

21

v

3.3.2.1

3.3.2.1 bicubic bicubic B B--spline spline Surface Interpolation Surface Interpolation 개요 개요 (1) (1)

-- Given: Given: 곡면상의 곡면상의 99개 개 점과 점과 4 4 꼭지점에서의 꼭지점에서의 u, v u, v방향의 방향의 접선벡터 접선벡터 -- Find: Control Points of Find: Control Points of bicubic bicubic B B--spline spline Surface Surface

Computer Aided Ship Design 2008

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

22

p

00

p

10

p

20

u

ú ú ú ú ú ú

û ù

ê ê ê ê ê ê

ë é

4 , 4

, 4

, 4

, 4

, 0

3 , 3

, 3

, 3

, 3

, 0

2 , 2

, 2

, 2

, 2

, 0

1 , 1

, 1

, 1

, 1

, 0

0 , 0

, 0

, 0

, 0

,

4 3

2 1

4 3

2 1

4 3

2 1

4 3

2 1

4 3

2 1

0

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

ú ú ú ú ú ú

û ù

ê ê ê ê ê ê

ë é

) (

) (

) (

) (

) (

3 4 3 3 3 2 3 1

3 0

v N

v N

v N

v N

v N

[ ( ) ( ) ( ) ( )

43

( ) ]

3 3 3

2 3

1 3

0

u N u N u N u N u

) N

, ( v u

r =

5x5 개의 조정점을 구하면 곡면을 생성할 수 있다.

(23)

곡선상의 점(P

i,j

)과 접선벡터 (t

i,j

) 으로부터 중간 조정점(C

i,j

)을 구한다.

p

12

p

10

p

02

p

22

p

01

p

21

C

10

C

20

C

30

v ú ú

ú ú ú ú

û ù

ê ê ê ê ê ê

ë é

= ú ú ú ú ú ú

û ù

ê ê ê ê ê ê

ë é

ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê

ë é

D - D

D - D

20 20 10 00 00

40 30 20 10 00

P t P t P

C C C C C

1 0

0 0 0

3 0 3

0 0

0 0

0 0

3 0 3

0 0

0 0 1

E E

s s

g b

a

3.3.2.1

3.3.2.1 bicubic bicubic B B--spline spline Surface Interpolation Surface Interpolation 개요 개요 (2) (2)

-- Given: Given: 곡면상의 곡면상의 99개 개 점과 점과 4 4 꼭지점에서의 꼭지점에서의 u, v u, v방향의 방향의 접선벡터 접선벡터 -- Find: Control Points of Find: Control Points of bicubic bicubic B B--spline spline Surface Surface

Computer Aided Ship Design 2008

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

23

p

00

p

10

p

20

u

ú ú ú ú ú ú

û ù

ê ê ê ê ê ê

ë é

= ú ú ú ú ú ú

û ù

ê ê ê ê ê ê

ë é

ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê

ë é

D - D

D - D

20 20 10 00 00

40 30 20 10 00

P t P t P

C C C C C

1 0

0 0 0

3 0 3

0 0

0 0

0 0

3 0 3

0 0

0 0 1

E E

s s

g b

a

p

00

p

10

p

20

t

20

t

00

p

01

p

11

p

21

t

21

t

01

Bessel end condition으로 접선벡터(t

i,j

)를 구한다

Bessel end condition:

곡선을 지난는 3점을 2차식으로 보간(interpolation)한 후, 곡선의 끝점에서의 1차미분값을 구하는 방법

(24)

중간 조정점(C

i,j

)과 접선 벡터 (t

i,j

)

으로부터 B-spline조정점(d

i,j

)을 구한다.

3.3.2.1

3.3.2.1 bicubic bicubic B B--spline spline Surface Interpolation Surface Interpolation 개요 개요 (3) (3)

-- Given: Given: 곡면상의 곡면상의 99개 개 점과 점과 4 4 꼭지점에서의 꼭지점에서의 u, v u, v방향의 방향의 접선벡터 접선벡터 -- Find: Control Points of Find: Control Points of bicubic bicubic B B--spline spline Surface Surface

ú ú ú ú ú ú

û ù

ê ê ê ê ê ê

ë é

=

ú ú ú ú ú ú

û ù

ê ê ê ê ê ê

ë é

ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê

ë é

D - D

D - D

22 22

21 20

20

24 23 22 21 20

C t C

t C

d d d d d

1 0

0 0

0

3 0 3

0 0

0 0

0 0

3 0 3

0 0

0 0

1

E E

s s

g b

a

p

12

p

02

p

22

p

01

p

21

C

10

C

20

C

30

v

Computer Aided Ship Design 2008

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

24

ú ú ú ú ú ú

û ù

ê ê ê ê ê ê

ë é

=

ú ú ú ú ú ú

û ù

ê ê ê ê ê ê

ë é

ú ú ú ú ú ú ú

û ù

ê ê ê ê ê ê ê

ë é

D - D

D - D

22 22

21 20

20

24 23 22 21 20

C t C

t C

d d d d d

1 0

0 0

0

3 0 3

0 0

0 0

0 0

3 0 3

0 0

0 0

1

E E

s s

g b

a

p

00

p

10

p

20

u v

C

22

C

20

C

21

t

22

t

20

Bessel end condition으로 접선벡터(t

i,j

)를 구한다

(25)

3.3.2.2

3.3.2.2 bicubic bicubic B B--spline spline Surface Interpolation Surface Interpolation 상세 상세 과정 과정 (1) (1)

-- Given: Given: 곡면상의 곡면상의 99개 개 점과 점과 4 4 꼭지점에서의 꼭지점에서의 u, v u, v방향의 방향의 접선벡터 접선벡터 -- Find: Control Points of Find: Control Points of bicubic bicubic B B--spline spline Surface Surface

p

00

p

10

p

02

p

12

p

22

p

01

p

21

p

11

v

4 6

6 6

5.4 3.6

1. u 방향 knot를 결정

l 주어진 점들의 u방향 거리를 계산한다

Computer Aided Ship Design 2008

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

25

p

00

p

10

p

20

u

4 6

q Given

l

곡면이 지나야할 점들의 좌표

l

점들은 사각형 grid 형태여야 함 (예, 2x2)

(26)

3.3.2.2

3.3.2.2 bicubic bicubic B B--spline spline Surface Interpolation Surface Interpolation 상세 상세 과정 과정 (2) (2)

-- Given: Given: 곡면상의 곡면상의 99개 개 점과 점과 4 4 꼭지점에서의 꼭지점에서의 u, v u, v방향의 방향의 접선벡터 접선벡터 -- Find: Control Points of Find: Control Points of bicubic bicubic B B--spline spline Surface Surface

p

00

p

10

p

02

p

12

p

22

p

01

p

21

p

11

v

0 6

12 0 5.4

9

1. u 방향 knot를 결정

l 주어진 점들의 u방향 거리를 계산한다

l 계산한 거리를 각 점별로 누적한다. 이 거리를

곡면의 u방향 knot라고 부른다

4 6

6 6

5.4 3.6

Computer Aided Ship Design 2008

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

26

p

00

p

10

p

20

0

u

4

10

q Given

l

곡면이 지나야할 점들의 좌표

l

점들은 사각형 grid 형태여야 함 (예, 2x2)

4 6

(27)

3.3.2.2

3.3.2.2 bicubic bicubic B B--spline spline Surface Interpolation Surface Interpolation 상세 상세 과정 과정 (3) (3)

-- Given: Given: 곡면상의 곡면상의 99개 개 점과 점과 4 4 꼭지점에서의 꼭지점에서의 u, v u, v방향의 방향의 접선벡터 접선벡터 -- Find: Control Points of Find: Control Points of bicubic bicubic B B--spline spline Surface Surface

p

00

p

10

p

02

p

12

p

22

p

01

p

21

p

11

v

1

1 0.5

0.6

1. u 방향 knot를 결정

l 주어진 점들의 u방향 거리를 계산한다

l 계산한 거리를 각 점별로 누적한다. 이 거리를

곡면의 u방향 knot라고 부른다

l 마지막 점의 knot값으로 각 점의 knot값을 나누어 정규화된 knot값을 계산한다

0 6

12 0 5.4

9

Computer Aided Ship Design 2008

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

27

p

00

p

10

p

20

u

1

1 0.4

q Given

l

곡면이 지나야할 점들의 좌표

l

점들은 사각형 grid 형태여야 함 (예, 2x2)

0 4

10

(28)

3.3.2.2

3.3.2.2 bicubic bicubic B B--spline spline Surface Interpolation Surface Interpolation 상세 상세 과정 과정 (4) (4)

-- Given: Given: 곡면상의 곡면상의 99개 개 점과 점과 4 4 꼭지점에서의 꼭지점에서의 u, v u, v방향의 방향의 접선벡터 접선벡터 -- Find: Control Points of Find: Control Points of bicubic bicubic B B--spline spline Surface Surface

p

00

p

10

p

02

p

12

p

22

p

01

p

21

p

11

v

0 0.5

1

1. u 방향 knot를 결정

l 주어진 점들의 u방향 거리를 계산한다

l 계산한 거리를 각 점별로 누적한다. 이 거리를

곡면의 u방향 knot라고 부른다

l 마지막 점의 knot값으로 각 점의 knot값을 나누어 정규화된 knot값을 계산한다

l 정규화된 knot값들을 v방향으로 평균하여 최종적인

u방향 knot값을 계산한다

0

0

1

1 0.5

0.6

Computer Aided Ship Design 2008

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

28

p

00

p

10

p

20

u

q Given

l

곡면이 지나야할 점들의 좌표

l

점들은 사각형 grid 형태여야 함 (예, 2x2)

0

1 0.4

(29)

3.3.2.2

3.3.2.2 bicubic bicubic B B--spline spline Surface Interpolation Surface Interpolation 상세 상세 과정 과정 (5) (5)

-- Given: Given: 곡면상의 곡면상의 99개 개 점과 점과 4 4 꼭지점에서의 꼭지점에서의 u, v u, v방향의 방향의 접선벡터 접선벡터 -- Find: Control Points of Find: Control Points of bicubic bicubic B B--spline spline Surface Surface

p

00

p

10

p

02

p

12

p

22

p

01

p

21

p

11

v

1. u 방향 knot를 결정

l 주어진 점들의 u방향 거리를 계산한다

l 계산한 거리를 각 점별로 누적한다. 이 거리를

곡면의 u방향 knot라고 부른다

l 마지막 점의 knot값으로 각 점의 knot값을 나누어 정규화된 knot값을 계산한다

l 정규화된 knot값들을 v방향으로 평균하여 최종적인

u방향 knot값을 계산한다

2. u 방향 점들을 보간하는 B-spline 곡선을 계산

l 최종적인 u방향 knot와 점들을 지나는 B-spline 곡선과 그 조정점을 계산한다

0 0.5

1

Computer Aided Ship Design 2008

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

29

p

00

p

10

p

20

u

q Given

l

곡면이 지나야할 점들의 좌표

l

점들은 사각형 grid 형태여야 함 (예, 2x2)

2. u 방향 점들을 보간하는 B-spline 곡선을 계산

l 최종적인 u방향 knot와 점들을 지나는 B-spline 곡선과 그 조정점을 계산한다

3. v 방향 knot 간격을 u뱡향과 동일한 방법으로 구함

4. u 방향 B-spline 곡선의 조정점을 보간하는 v방향 B-spline 곡선을 계산

l u방향 B-spline 곡선의 조점정에 대해서 1번과 같은 방법으로 v방향 knot를 결정한 후, 이를 이용하여 v방향 B-spline 곡선 (빨간점선)을 생성한다. 이 곡선의 조정점 (파란점) 이 최종 B-spline 곡면의 조정점이다

참조

관련 문서

2009 Fall, Computer Aided Ship Design – Part1 Optimal Ship Design.. @ SDAL Advanced Ship

원뿔곡선은 이차유리 베지에(quadratic rational Bezier curve)로 표현가능하며, 사실상

2.2.4 Bezier Curve Interpolation / Approximation 2.2.1 Definition &amp; Characteristics of Bezier curves 2.2.2 Degree Elevation/Reduction of Bezier curves 2.2.3

Key word : homogeneous barycentric coordinate, quadratic rational Bezier curve, isogonal conjugate, isotomic conjugate, centroid, incenter... 이차 유리

Hull Form Modeling 2009 Fall, Computer Aided Ship Design – Part2..

Computer Aided Ship Design 2008 –– PART II: Ship Motion &amp; Wave Load PART II: Ship Motion &amp; Wave

Department of Naval Architecture and Ocean Engineering, Seoul National University of College of Engineering.. Ship Motion &amp; Wave Load

- Hooke &amp; Jeeves Direct Search Method Algorithm summary (2) 1) Local Pattern Search (총 n개의 좌표 축을 가진 경우에 대하여). 나머지 좌표 축에 대해 위와 같은