Professional Documents
Culture Documents
NG CONG
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
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
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
Trang 12
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
=
=
=
=
ax02 + bx0 + c
2a
xx0 + a
x2 + b
x
yi + yi
yi + 2a
x2
Trang 14
=
=
=
=
=
=
Trang 15
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
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
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
p0
Trang 26
Trang 27
p2
p0
p3
Trang 29
t [0,1]
vi Bnk (t ) =
n!
(1 t)nk t k
k! (n k )!
hoac
k =n
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
p2
p0
p3
p0 p1 + p1 p2 + p2 p3
f=
p0 p3
Trang 33
Trang 34
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
Trang 37
Trang 38
Trang 39
p1
p3
p0
l2
l1
l3 r0
r1
r2
r3
l0
Trang 40
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
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
v1
p1
Trang 45
Trang 46
pB2
vH0
B
3
p
B
0
H
0
p1H
Trang 47
v1H
Dan nhap
Bao nhieu
ng cong?
Trang 48
NG CONG PHC
C3
C4
C1
Trang 50
Trang 51
Trang 52
Phan loai
1. ng cong Splines
2. ng cong B-Splines
3. ng cong Nurbs (NonUniform Rational B-Splines)
Trang 53
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
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
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
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
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
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
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
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
a(1 t 2 )
x(t )
b(2t )
=
2
+
1
t
(
)
y
t
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