You are on page 1of 80

O HOA 2D

NG CONG

Giang vien : Bui Tien Len

Phan loai
Quan iem toan hoc
- ng cong c bieu dien bang ham so
- ng cong c bieu dien bang phng trnh tham so
Quan iem thiet ke
- ng cong CAD (Computer Aided Design)

Trang 2

ng cong c bieu dien bang


ham so

Bai toan
Input
Ham so y = f(x)
Mien oi so [xmin, xmax]
Output
o th ham so

y=f(x)

xmin

xmax

Trang 4

Thuat toan
Bc 1 : Chia mien oi so ra N
oan bang nhau

x0 x1 x2
xmin

xN-1xN
xmax

Trang 5

Thuat toan
Bc 2 : Tnh y
yN
y1 y
2
y0

yN-1

x0 x1 x2

xN-1xN

xmin

xmax

Trang 6

Thuat toan
Bc 3 : Ke ng gap khuc i
qua N + 1 iem.
yN
y1 y
2
y0

yN-1

x0 x1 x2

xN-1xN

xmin

xmax

Trang 7

Cai at
// Hm v ng cong hm s
void DrawCurve2D(CDC *pDC, TFunc2D f, double xmin, double xmax)
{
double x, x, y;
x = (xmax xmin)/N;
x = xmin;
y = f(x);
pDC->MoveTo(ConvertWorldToScreen2D(x, y));
for(int i=1; i<=N; i++)
{
x += x;
y = f(x);
pDC->LineTo(ConvertWorldToScreen2D(x, y));
}
}

Trang 8

Cai at
// Lp phng trnh hm
class TFunc2D {
virtual double operator () (double x) = 0;
};

Trang 9

Van e phan oan


So phan oan N la bao nhieu ?
o phan giai cot

Trang 10

o th a thc bac ba
Cho
y = ax3 + bx2 + cx + d
x [xmin, xmax]
y = 0.1x3 0.2x2 0.2x + 3
x[ 4,4]

Trang 11

Van e tnh gia tr a thc


Cach tnh thong thng
a*x*x*x + b*x*x + c*x + d;
Can 6 phep nhan va 3 phep cong
Cach tnh Horner
((a*x + b)*x + c)*x + d
Can 3 phep nhan va 3 phep cong
Cach tnh cai tien
?

Trang 12

Van e tnh gia tr a thc


a thc bac nhat y = ax + b
Cach tnh thong thng

Cach tnh cai tien

yi = axi + b
Tnh

y0 = ax0 + b
yi+1 = yi + a
x
Tnh

y0 = ax0 + b

y0 = ax0 + b

y1 = ax1 + b

y1 = y0 + a
x

y2 = ax2 + b

y2 = y1 + a
x

...

...

yi = axi + b

yi = yi-1 + a
x

yi+1 = axi+1 + b

yi+1 = yi + a
x

...

...

yN = axN+1 + b

y0 = yi + a
x Trang 13

Van e tnh gia tr a thc


a thc bac hai y = ax2 + bx + c
Cach tnh thong thng
yi = axi2 + bxi + c

Cach tnh cai tien


y0
y0
yi+1
yi+1

=
=
=
=

ax02 + bx0 + c
2a
xx0 + a
x2 + b
x
yi + yi
yi + 2a
x2

Trang 14

Van e tnh gia tr a thc


a thc bac ba y = ax3 + bx2 + cx + d
Cach tnh cai tien
y0
y0
y0
yi+1
yi+1
yi+1

=
=
=
=
=
=

ax03 + bx02 + cx0 + d


xx02 + (3a
x2 + 2b
x)x0 + a
x3 + b
x2 + c
x
3a
6a
x2x0 + 6a
x3 + 2b
x2
yi + yi
yi + yi
yi + 6a
x3

Trang 15

ng cong c bieu dien bang


Phng trnh tham so

Bai toan
Input:
Phng trnh tham so
x(t)
y(t)
Mien tham so
t [tmin, tmax]
Output:

x (t ) = a cos (t )
y (t ) = a sin (t )
z = bt

x(t ) = cos(5t ) cos(t )


y(t ) = cos(5t )sin(t )
t [0,2 ]
Trang 17

Thuat toan
Bc 1 : Chia mien tham so ra
N oan bang nhau

Mien tham so
to
tmin

t1

t2

tN
tmax

Trang 18

Thuat toan
Bc 2 : Tnh (x, y)

ti

tN

t2
t1
to

Trang 19

Thuat toan
Bc 3 : Ve ng gap khuc i
qua N + 1 iem

(xN, yN)
(x2, y2)
(x1, y1)
(x0, y0)

Trang 20

Cai at
// Hm v ng cong tham s
void DrawCurve2D(CDC *pDC, TPara2D f, double tmin, double tmax)
{
double t, t;
TPoint2D p;
t = (tmax tmin)/N;
t = tmin;
p = f(t);
pDC->MoveTo(ConvertWorldToScreen2D(p));
for(int i=1; i<=N; i++)
{
t += t;
p = f(t);
pDC->LineTo(ConvertWorldToScreen2D(p));
}
}

Trang 21

Cai at
// Lp phng trnh tham s
class TPara2D {
virtual TPoint2D operator () (double t) = 0;
}

Trang 22

Van e phan oan


x(t ) = cos t
y(t ) = sin t
t [0,2]

x(t ) = t cos t
y(t ) = t sin t
t [0,8]

Trang 23

NG CONG BEZIER

nh ngha ng cong
Input
n +1 iem ieu khien {p0, p1, ... , pn}
Output
p1

p0

pn

Trang 25

ng cong Bezier bac mot


p1

p0

p(t) = (1 t)p0 + tp1


t [0, 1]
hoac
x(t) = (1 t)p0x + tp1x
y(t) = (1 t)p0y + tp1y
t [0, 1]

Trang 26

ng cong Bezier bac hai


p1
p2
p(t) = (1 t)2p0 + 2(1 t)tp1 + t2p2
t [0, 1]
hoac
x(t) = (1 t)2p0x + 2(1 t)tp1x + t2p2x
y(t) = (1 t)2p0y + 2(1 t)tp1y + t2p2y
t [0, 1]
p0

Trang 27

ng cong Bezier bac ba


p1

p2

p0

p3

p(t) = (1 t)3p0 + 3(1 t)2tp1 + 3(1 t)t2p2 + t3p3


t [0, 1]
hoac
x(t) = (1 t)3p0x + 3(1 t)2tp1x + 3(1 t)t2p2x + t3p3x
y(t) = (1 t)3p0y + 3(1 t)2tp1y + 3(1 t)t2p2y + t3p3y
t [0, 1]
Trang 28

Mot so ng cong Bezier bac ba

Trang 29

Cong thc xac nh ng cong


Ptts ng cong Bezier bac n c tao bi n + 1iem ieu khien
k =n

p(t ) = Bnk (t ).pk


k=0

t [0,1]

vi Bnk (t ) =

n!
(1 t)nk t k
k! (n k )!

hoac
k =n

x(t ) = Bnk (t ).pk x


k =0
k =n

y(t ) = Bnk (t ).pky


k =0

t [0,1]

Trang 30

Tnh chat 1
Bao toan qua phep bien oi affine.

Trang 31

Tnh chat 2
Cac iem ieu khien tao thanh bao loi cua ng cong

Trang 32

o thang cua ng cong Bezier


p1

p2

p0

p3

p0 p1 + p1 p2 + p2 p3
f=
p0 p3

Trang 33

Thuat toan ve ng cong Bezier

Trang 34

Thuat toan ve ng cong Bezier


Xet ng cong Bezier vi cac iem ieu khien {p0, p1,
... , pn}, noi cac iem lien tiep e tao thanh a giac ieu
khien
Chia moi oan trong a giac vi t so t:(1-t), noi cac
iem mi tnh, ta co c a giac vi so nh t hn 1
Lap lai bc tren cho en khi ch con mot iem n,
chnh la iem cua ng cong Bezier ng vi tham so t


Trang 35

ao ham
p(0) = 3(p1 p0)
p(1) = 3(p3 p2)
p(0) = 6(p0 2p1 + p2)
p(1) = 6(p1 2p2 + p3)
p1

p2

p3
p0
Trang 36

Tnh lien tuc


Mot ng cong Bezier khong u phc tap
Ghep nhieu ng cong Bezier vi nhau
Yeu cau tnh lien tuc tai cac iem ghep noi
Lien tuc tham so
C0: lien tuc tham so bac 0, hai Bezier co cung au mut
C1: C0 + co cung vector tiep tuyen tai iem au mut
C2: C1 + co cung ao ham bac 2 tai iem au mut

Trang 37

Tnh lien tuc


Lien tuc bac 0

Lien tuc bac 1

Lien tuc bac 2

Trang 38

Tnh lien tuc


Lien tuc hnh hoc
G1: tiep tuyen cung hng nhng khong can cung o
ln
G2: cung tiep tuyen va cung o cong

Trang 39

Thuat toan ve e qui


p2

p1

p3
p0
l2
l1

l3 r0

r1
r2

r3
l0

Trang 40

Thuat toan ve e qui

l0 = p0
p0 + p1
l1 =
2
p0 + 2p1 + p2
l2 =
4
p0 + 3p1 + 3p2 + p3
l3 =
8

p0 + 3p1 + 3p2 + p3
8
p1 + 2p2 + p3
r1 =
4
p2 + p3
r2 =
2

r0 =

r3 = p3

Trang 41

Thuat toan ve e qui


Ve Bezier (p0, p1, p2, p3)
Bat au
Neu Thang (p0, p1, p2, p3) th
Ve oan thang p0p3
Ngc lai
Chia {pi} thanh {li} va {ri}
Ve Bezier (l0, l1, l2, l3)
Ve Bezier (r0, r1, r2, r3)
Ket thuc

Trang 42

NG CONG HERMITE

nh ngha ng cong
Input
2 iem {p0, p1}
2 vector {v0, v1}
Ouput


v0
p0


v1
p1

Trang 44

Cong thc xac nh ng cong



v0
p0


v1
p1

p(t) = H03(t)p0 + H13(t)p1 + H23(t)v0 + H33(t)v1


p(t) = (2t3 + 3t2 + 1)p0 + (-2t3 + 3t2)p1 + (t3 2t2 + t)v0 + (t3 t2)v1
t [0, 1]
hoac
x(t) = (2t3 + 3t2 + 1)p0x + (-2t3 + 3t2)p1x + (t3 2t2 + t)v0x + (t3 t2)v1x
y(t) = (2t3 + 3t2 + 1)p0y + (-2t3 + 3t2)p1y + (t3 2t2 + t)v0y + (t3 t2)v1y
t [0, 1]

Trang 45

Mot so ng cong Hermite

Trang 46

ng cong Bezier bac ba & Hermite


pH0 = pB0
p1H = pB3
vH0 = 3(p1B pB0 )
v1H = 3(pB3 pB2 )
p1B

pB2

vH0

B
3

p
B
0

H
0

p1H

Trang 47

v1H

Dan nhap
Bao nhieu
ng cong?

Trang 48

NG CONG PHC

nh ngha ng cong phc


ng cong phc la s ket hp cua nhng ng cong
c s C = {C1, C2, , Cn}
C2

C3

C4

C1
Trang 50

Yeu cau thiet ke ng cong phc


oi vi ngi thiet ke
1. De ve
2. Lien tuc
3. Cuc bo
oi vi ngi lap trnh
1. Bieu dien de dang va hieu qua
2. Tnh toan hieu qua

Trang 51

Tnh lien tuc


Lien tuc bac 0

Lien tuc bac 1

Lien tuc bac 2

Trang 52

Phan loai
1. ng cong Splines
2. ng cong B-Splines
3. ng cong Nurbs (NonUniform Rational B-Splines)

Trang 53

CAC NG CONG SPLINES

nh ngha ng cong Splines


Input
n +1 iem {P0, P1, ... , Pn}
va mot so thong tin khac
Output
C = {C1, C2, , Cn} vi Ci la cac ng cong Hermite
P1
Pn-1

C1

Cn

C2
P0

Pn
P2

Trang 55

Cardinal Splines
- Tham so tension t

p0 = Pk

Pk
Pk+1

p1 = Pk +1
v0

Pk-1
Pk+2

(
1 t )
(P
=

k +1

Pk 1 )

2
(
1 t )
(Pk+ 2 Pk )
v1 =
2

Trang 56

Anh hng cua tham so tension t

t<0

t>0

Trang 57

Catmull--Rom Splines
Catmull
La trng hp ac biet cua Cardinal Splines vi t = 0

p0 = P1
P2
P1

P4

P3

p1 = P2
P2 P0
v0 =
2
P P1
v1 = 3
2

P0

Trang 58

Kochanek--Bartels Splines
Kochanek
La trng hp tong quat cua Cardinal Splines
- Tham so tension t
- Tham so bias b
- Tham so continuity c
p0 = Pk
p1 = Pk +1
1
(1 t )[(1+ b)(1 c)(Pk Pk1) + (1 b)(1+ c)(Pk+1 Pk )]
2
1
v1 = (1 t )[(1+ b)(1+ c )(Pk +1 Pk ) + (1 b)(1 c )(Pk + 2 Pk +1 )]
2

v0 =

Trang 59

Anh hng cua tham so bias b

b<0

b>0

Trang 60

Natural Splines
La ng cong lien tuc C2
P1
v3
v0

v1

P3

P0

P2

v2

Trang 61

Natural Splines

P1
v3
v0

v1

P3

P0

P2

v2

Trang 62

Natural Splines
Trng hp 1 :
Biet cac vector v0 va vn
1

v0 v0

4 1 v1 3(P2 P0 )
1 4 1 v2 3(P3 P1)
=

1 4 1 vn1 3(Pn Pn 2 )

1 vn vn

Trang 63

Natural Splines
Trng hp 2 :
ao ham bac hai tai hai iem P0 va Pn eu bang 0

2 1

1 4 1
1 4 1

v0 3(P1 P0 )

v1 3(P2 P0 )
v2 3(P3 P1)
=

4 1 vn1 3(Pn Pn 2 )

1 2 vn 3(Pn Pn1)

Trang 64

Free Splines
La ng cong lien tuc C0

Trang 65

NG CONG BB-SPLINES

nh ngha
Input
n +1 iem {P0, P1, ... , Pn}, Bac k 1, Tap hp tham so knot
{t0, t1, , tn+k}
Output
C = {C1, C2, , Cn-2} vi Ci la cac ng cong Bezier
P1

P2

C1

P5

C2
C3
P0

P3

P4

Trang 67

Cong thc
i =n

p(t ) = Nki (t )Pi


i= 0

t [0,1]
Vi
1 neu t [ti , ti+1]
N (t ) =
0 khac
t ti
t t k 1
Nki (t ) =
Nki 1(t ) + i+k
Ni+1 (t )
t i+k 1 t i
t i+k ti+1
1
i

Trang 68

Cong thc BB-Splines bac ba eu

P1
p0

P0

p1

p2

P2
P5

p3

P3

P0 + 4P1 + P2
p0 =
6
2P1 + P2
p1 =
3
P1 + 2P2
p2 =
3
P1 + 4P2 + P3
p3 =
6

P4

Trang 69

Cong thc BB-Splines bac hai eu

p1P1

P2
p2
P5

p0 =

p1 = P1

p0

p2 =
P0

P1 P0
2

P3

P2 P1
2

P4

Trang 70

NG CONG HU T

nh ngha
La ng cong trong o cac ham x(t) va y(t) la cac
ham a thc hu t

ng tron

ng ellipse

Trang 72

ng Conic
Dang chuan
Ellipse
x2 y2
+ 2 = 1 a, b > 0
2
b
a
Hyperbola
x2 y2
2 = 1 a, b > 0
2
a
b
Parabola
y 2 = 4ax

a>0

Trang 73

ng Conic
Dang tham so
Ellipse
1 t 2
x(t ) = a
1+ t 2
2t
y(t ) = b
1+ t 2
Hyperbola
1+ t 2
x(t ) = a
1 t 2
2t
y(t ) = b
1 t 2

t ( , )

t ( , )

Trang 74

ng Bezier hu t bac hai


Input
p0(x0, y0) va trong so w0
p1(x1, y1) va trong so w1
p2(x2, y2) va trong so w2
Output

p1,w1

p0,w0

p2,w2

Trang 75

Cong thc
He toa o thuan nhat
x(t )
x0
x1
x2




2
2
2
y(t ) = B0 (t ) y0 + B1 (t ) y1 + B2 (t ) y 2
w(t )
w
w
w

0
1
2
B02 (t )x0 + B12 (t )x1 + B22 (t )x 2
2

2
2
= B0 (t )y0 + B1 (t )y1 + B2 (t )y 2
B2 (t )w + B2 (t )w + B2 (t )w
0
1
1
2
2
0

Trang 76

Cong thc
He toa o e cac

B02 (t )x0 + B12 (t )x1 + B22 (t )x 2


2

2
2
x (t ) B0 (t )w0 + B1 (t )w1 + B2 (t )w2

=
2
2
2

(
)
(
)
B
t
y
B
t
y
B
+
+
(
)
y
t

0
0
1
1
2 (t )y 2
2

2
2
(
)
(
)
(
)
B
t
w
B
t
w
B
t
w
+
+
0
0
1
1
2
2
x0
x1
x2
2
2
B (t ) + B1 (t ) + B2 (t )
y0
y1
y2

=
B02 (t )w0 + B12 (t )w1 + B22 (t )w2
2
0

x0
x1
x2
2
2
B (t )w0 + B1 (t )w1 + B2 (t )w2
y0
y1
y2

=
B02 (t )w0 + B12 (t )w1 + B22 (t )w2
2
0

Trang 77

Bieu dien Conic bang Bezier hu t


ng Ellipse

a(1 t 2 )

x(t )
b(2t )

=
2
+
1
t
(
)
y
t

B02 (t )a + B12 (t )a + B22 (t )0


2

2
2
B0 (t )0 + B1 (t )b + B2 (t )2b

=
B02 (t ) + B12 (t ) + B22 (t )2
a
a
0
2
2
B (t ).1. + B1 (t ).1. + B1 (t ).2.
0
b
b

=
B02 (t ).1+ B12 (t ).1+ B22 (t ).2
2
0

Trang 78

NG CONG NURBS

nh ngha
La ng cong phc C = {C1, C2, , Cn-2} vi Ci la cac
ng cong Bezier hu t

Trang 80

You might also like