Tải bản đầy đủ (.ppt) (76 trang)

slike bài giảng đồ họa máy tính đồ họa 2d đường cong

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (341.74 KB, 76 trang )

ĐỒ HỌA 2D
ĐỒ HỌA 2D
ĐƯỜNG CONG
ĐƯỜNG CONG
Giảng viên : Bùi Tiến Lên
Trang 2
Phân loại
Phân loại
Quan điểm toán học
- Đường cong được biểu diễn bằng hàm số
-
Đường cong được biểu diễn bằng phương trình tham số
Quan điểm thiết kế
- Đường cong CAD (Computer Aided Design)
Đường cong được biểu diễn bằng
Đường cong được biểu diễn bằng
hàm số
hàm số
Trang 4
Baứi toaựn
Baứi toaựn
Input
Haứm soỏ y = f(x)
Mien ủoỏi soỏ [x
min
, x
max
]
Output
ẹo thũ haứm soỏ
x


max
x
min
y=f(x)
Trang 5
Thuật toán
Thuật toán
Bước 1 : Chia miền đối số ra N
đoạn bằng nhau
x
0
x
1
x
2
x
N-1
x
N
x
min
x
max
Trang 6
Thuaät toaùn
Thuaät toaùn
Böôùc 2 : Tính y
x
0
x

1
x
2
x
N-1
x
N
x
min
x
max
y
0
y
1
y
2
y
N-1
y
N
Trang 7
Thuật toán
Thuật toán
Bước 3 : Kẻ đường gấp khúc đi
qua N + 1 điểm.
x
0
x
1

x
2
x
N-1
x
N
y
0
y
1
y
2
y
N-1
y
N
x
min
x
max
Trang 8
Caøi ñaët
Caøi ñaët
// Hàm vẽ đường cong hàm số
void DrawCurve2D(CDC *pDC, TFunc2D f, double x
min
, double x
max
)
{

double ∆x, x, y;
∆x = (x
max
– x
min
)/N;
x = x
min
;
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 9
Caøi ñaët
Caøi ñaët
// Lớp phương trình hàm
class TFunc2D {
virtual double operator () (double x) = 0;
};
Trang 10
Vấn đề phân đoạn
Vấn đề phân đoạn
Số phân đoạn N là bao nhiêu ?
độ phân giải cột

Trang 11
Ñoà thò ña thöùc baäc ba
Ñoà thò ña thöùc baäc ba
Cho
y = ax
3
+ bx
2
+ cx + d
x ∈ [x
min
, x
max
]
[ ]
4,4x
3x2.0x2.0x1.0y
23
−∈
+−−=
Trang 12
Vấn đề tính giá trò đa thức
Vấn đề tính giá trò đa thức
Cách tính thông thường
a*x*x*x + b*x*x + c*x + d;
Cần 6 phép nhân và 3 phép cộng
Cách tính Horner
((a*x + b)*x + c)*x + d
Cần 3 phép nhân và 3 phép cộng
Cách tính cải tiến

?
Trang 13
Vấn đề tính giá trò đa thức
Vấn đề tính giá trò đa thức
Đa thức bậc nhất y = ax + b
Cách tính thông thường Cách tính cải tiến
y
i
= ax
i
+ b y
0
y
i+1
=
=
ax
0
+ b
y
i
+ a∆x
Tính Tính
y
0
= ax
0
+ b y
0
= ax

0
+ b
y
1
= ax
1
+ b y
1
=
y
0
+ a∆x
y
2
= ax
2
+ b y
2
=
y
1
+ a∆x

y
i
= ax
i
+ b y
i
=

y
i-1
+ a∆x
y
i+1
= ax
i+1
+ b y
i+1
=
y
i
+ a∆x

y
N
= ax
N+1
+ b y
0
=
y
i
+ a∆x
Trang 14
Vấn đề tính giá trò đa thức
Vấn đề tính giá trò đa thức
Đa thức bậc hai y = ax
2
+ bx + c

Cách tính thông thường Cách tính cải tiến
y
i
= ax
i
2
+ bx
i
+ c y
0
∆y
0
y
i+1
∆y
i+1
=
=
=
=
ax
0
2
+ bx
0
+ c
2a∆xx
0
+ a∆x
2


+ b∆x
y
i
+ ∆y
i
∆y
i
+ 2a∆x
2
Trang 15
Vấn đề tính giá trò đa thức
Vấn đề tính giá trò đa thức
Đa thức bậc ba y = ax
3
+ bx
2
+ cx + d
Cách tính cải tiến
y
0
∆y
0
∆∆y
0
y
i+1
∆y
i+1
∆∆y

i+1
=
=
=
=
=
=
ax
0
3
+ bx
0
2
+ cx
0
+ d
3a∆xx
0
2
+ (3a∆x
2
+ 2b∆x)x
0
+ a∆x
3
+ b∆x
2
+ c∆x
6a∆x
2

x
0
+ 6a∆x
3
+ 2b∆x
2
y
i
+ ∆y
i
∆y
i
+ ∆∆y
i
∆∆y
i
+ 6a∆x
3
Đường cong được biểu diễn bằng
Đường cong được biểu diễn bằng
Phương trình tham số
Phương trình tham số
Trang 17
Baøi toaùn
Baøi toaùn
Input:
Phöông trình tham soá
x(t)
y(t)
Mieàn tham soá

t ∈ [t
min
, t
max
]
Output:
( ) ( ) ( )
( ) ( ) ( )
[ ]
π∈
=
=
2,0t
tsint5costy
tcost5costx
Trang 18
Thuật toán
Thuật toán
Bước 1 : Chia miền tham số ra
N đoạn bằng nhau
t
o
t
1
t
2
t
N
Miền tham số
t

min
t
max
Trang 19
Thuaät toaùn
Thuaät toaùn
Böôùc 2 : Tính (x, y)
t
o
t
1
t
2
t
i
t
N
Trang 20
Thuật toán
Thuật toán
Bước 3 : Vẽ đường gấp khúc đi
qua N + 1 điểm
(x
0
, y
0
)
(x
1
, y

1
)
(x
2
, y
2
)
(x
N
, y
N
)
Trang 21
Caøi ñaët
Caøi ñaët
// Hàm vẽ đường cong tham số
void DrawCurve2D(CDC *pDC, TPara2D f, double t
min
, double t
max
)
{
double ∆t, t;
TPoint2D p;
∆t = (t
max
– t
min
)/N;
t = t

min
;
p = f(t);
pDC->MoveTo(ConvertWorldToScreen2D(p));
for(int i=1; i<=N; i++)
{
t += ∆t;
p = f(t);
pDC->LineTo(ConvertWorldToScreen2D(p));
}
}
Trang 22
Caøi ñaët
Caøi ñaët
// Lớp phương trình tham số
class TPara2D {
virtual TPoint2D operator () (double t) = 0;
}
Trang 23
Vaán ñeà phaân ñoaïn
Vaán ñeà phaân ñoaïn
( )
( )
[ ]
π∈
=
=
8,0t
tsintty
tcosttx

( )
( )
[ ]
π∈
=
=
2,0t
tsinty
tcostx
ÑÖÔØNG CONG CAD
ÑÖÔØNG CONG CAD
ÑÖÔØNG CONG BEZIER
ÑÖÔØNG CONG BEZIER

×