Professional Documents
Culture Documents
Lecture 2D Introduction
Lecture 2D Introduction
Trang 2
Mô hình đối tượng
Trang 3
bước 1 : biến đổi
Trang 4
bước 2 + 3 : xén + chuyển tọa độ
Trang 5
bước 4 : vẽ
Kết quả
Trang 6
MÔ HÌNH
Đối tượng được biểu diễn như thế nào ?
Các đối tượng cơ sở
- Điểm
- Đoạn thẳng
- Đa giác
- Đường cong (bezier, spline, bspline …)
Các đối tượng phức tạp được tạo thành từ các đối
tượng cơ sở
Trang 8
Tập tin dữ liệu
.TXT
•đối tượng cơ sở 1
•đối tượng cơ sở 2
•
•
•
•
Trang 9
Biểu diễn bằng đoạn thẳng
5
line x1 y1 x2 y2 r g b
4
TAM_GIAC.TXT
1 2
1 2 3 4 5 mm
Trang 10
Biểu diễn bằng đa giác
4 polygon n x1 y1 … xn yn r g b
TAM_GIAC.TXT
3
//cac da giac
3
polygon 3 0 0 4 0 0 2.5 255 0 0
2
1 2
1 2 3 4 5 mm
Trang 11
Ví dụ
NHA.TXT
//cac doan thang
line 0 0 6 0 255 0 0
5 line 6 0 6 2.5 255 0 0
line 6 2.5 3 3.5 255 0 0
line 3 3.5 0 2.5 255 0 0
4 line 0 2.5 0 0 255 0 0
4 line 1 1 2 1 0 255 0
line 2 1 2 2 0 255 0
3 line 2 2 1 2 0 255 0
5 3 line 1 2 1 1 0 255 0
2 9 8 13 12 line 4 0 5 0 0 0 255
line 5 0 5 2 0 0 255
line 5 2 4 2 0 0 255
line 4 2 4 0 0 0 255
1 6 7
1 10 11 2
1 2 3 4 5 6 7m
Trang 12
Ví dụ
1.0 3
0.8 A.TXT
0.2
1 2
0.2 0.4 0.6 0.8 1.0 mm
Trang 13
Ví dụ
1.0 8 7
0.8
11
0.6
9 10
0.4
3 4
0.2
1 2 5 6
0.2 0.4 0.6 0.8 1.0 mm
Trang 14
Cấu trúc dữ liệu
// Lưu tọa độ của một điểm
struct TPoint2D {
double x, y;
};
Trang 15
Cài đặt ñoïc bieán ñoåi xeùn chuyeån toïa ñoä veõ
Trang 16
ĐỒ HỌA 2D
Trang 18
Biến đổi tọa độ window – viewport là gì ?
Là phép chuyển đổi tọa độ thế giới thực hai chiều sang tọa
độ màn hình.
Trang 19
Công thức
l r
vùng quan sát
W vùng hiển thị
t V
t
P P’
b
b
l r
thế giới thực màn hình
Trang 20
Công thức
Theá giôùi thöïc maøn hình
Wr Wl Vr Vl Vr Vl
Px' (Px )
2 Wr Wl 2
Wt Wb Vt Vb Vt Vb
Py (Py
'
)
2 Wt Wb 2
Trang 21
Công thức cho đoạn thẳng
A
A’
B’
B
Trang 22
Công thức cho đa giác
Trang 23
Hệ số méo
Khi thiết lập cửa sổ window W và cửa sổ viewport V phải lưu ý đến
hệ số méo r
Vr Vl l r
Wr Wl
r
Vt Vb
W Wt Wb
t V
t
b
b
l r
thế giới thực màn hình
Trang 24
Hệ số méo
Trang 25
Cấu trúc dữ liệu
// Lưu thông tin cửa sổ quan sát
struct TWindow2D {
double l, r, b, t;
};
Trang 26
Cài đặt
void SetWindow2D(double l, double r, double b, double t)
{
W.l = l;
W.r = r;
W
W.b = b;
W.t = t;
}
Trang 27
Cài đặt
CPoint ConvertWorldToScreen2D(double x, double y)
{
CPoint Q;
Q.x=(x-(W.r+W.l)/2)*(V.r-V.l)/(W.r-W.l)+(V.r+V.l)/2;
Q.y=(y-(W.t+W.b)/2)*(V.t-V.b)/(W.t-W.b)+(V.t+V.b)/2;
return Q;
}
CPoint ConvertWorldToScreen2D(TPoint2D P)
{
CPoint Q;
Q.x=(P.x-(W.r+W.l)/2)*(V.r-V.l)/(W.r-W.l)+(V.r+V.l)/2;
Q.y=(P.y-(W.t+W.b)/2)*(V.t-V.b)/(W.t-W.b)+(V.t+V.b)/2;
return Q;
}
W V
Trang 28
Cài đặt ñoïc bieán ñoåi xeùn chuyeån toïa ñoä veõ
Trang 29