Đồ họa 2D - Qui trình hiển thị

Các bước hiển thị

Input : Mô hình các đối tượng

Output : Hình ảnh của các đối tượng

bước 1 : Biến đổi các đối tượng

bước 2 : Xén các đối tượng

bước 3 : Chuyển hệ tọa độ

bước 4 : Vẽ các đối tượng

pdf29 trang | Chuyên mục: Đồ Họa Máy Tính | Chia sẻ: dkS00TYs | Lượt xem: 1750 | Lượt tải: 1download
Tóm tắt nội dung Đồ họa 2D - Qui trình hiển thị, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ĐỒ HỌA 2D
QUI TRÌNH HIỂN THỊ
Giảng viên : Bùi Tiến Lên
Các bước hiển thị
Input : Mô hình các đối tượng
Output : Hình ảnh của các đối tượng
bước 1 : Biến đổi các đối tượng
bước 2 : Xén các đối tượng
bước 3 : Chuyển hệ tọa độ
bước 4 : Vẽ các đối tượng
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
ĐỒ HỌA 2D
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 …)
Trang 8
Các đối tượng phức tạp được tạo thành từ các đối 
tượng cơ sở
Tổ chức tập tin dữ liệu
đối tượng cơ sở 1
đối tượng cơ sở 2

.TXT
Trang 9



Mô hình bằng đoạn thẳng
line x
1
y
1
x
2
y
2
r g b
4
5
TAM_GIAC.TXT
Trang 10
1
3
2
1 2 3 4 5
1
2
3
mm
//cac doan thang
line 0 0 4 0 255 0 0
line 4 0 0 2.5 255 0 0
line 0 2.5 0 0 255 0 0
Mô hình bằng đa giác
polygon n x
1
y
1
… x
n
y
n
r g b4
5
TAM_GIAC.TXT
Trang 11
1 2 3 4 5
1
2
3
mm
1
3
2
//cac da giac
polygon 3 0 0 4 0 0 2.5 255 0 0
Ví dụ
4
4
5
//cac doan thang
line 0 0 6 0 255 0 0
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
line 0 2.5 0 0 255 0 0
NHA.TXT
Trang 12
1
5 3
2
9
6
8
7
10
13 12
11
1 2 3 4 5 6 7m
1
2
3 line 1 1 2 1 0 255 0
line 2 1 2 2 0 255 0
line 2 2 1 2 0 255 0
line 1 2 1 1 0 255 0
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
Ví dụ
0.8
1.0
// cac doan thang
3
A.TXT
Trang 13
0.2 0.4 0.6 0.8 1.0 mm
0.2
0.4
0.6
line 0 0 0.5 1 0 0 0
line 1 0 0.5 1 0 0 0
line 0.25 0.5 0.75 0.5 0 0 0
1 2
4 5
Ví dụ
8 7
11
0.8
1.0
Trang 14
1 65
43
2
9 10
0.2 0.4 0.6 0.8 1.0 mm
0.2
0.4
0.6
Cài đặt
// Lưu tọa độ của một điểm
struct TPoint2D {
double x, y;
};
// Lưu thơng tin của một đa giác
struct TPolygon2D {
int
Trang 15
n;
TPoint2D point[100];
};
Cài đặt
void Read_Draw_2D(CDC *pDC, char *filename)
{
ifstream f(filename);
if(f.fail()) return;
while(!f.eof())
{
char object[32];
f >> object;
if(strcmpi(object, “LINE”) == 0)
đọc biến đổi xén chuyển tọa độ vẽ
Trang 16
{
TPoint2D P1, P2;
int r, g, b;
// Doc doan thang
f >> P1.x >> P1.y >> P2.x >> P2.y >> r >> g >> b;
// Ve doan thang
pDC->MoveTo(P1.x, P1.y);
pDC->LineTo(P2.x, P2.y);
}
}
}
ĐỒ HỌA 2D
BIẾN ĐỔI TỌA ĐỘ
Dẫn nhập
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
hệ tọa độ thế giới thực hệ tọa độ màn hình
Công thức cho điểm
t
l r
t
vùng quan sát
W vùng hiển thị
V
P P’
Trang 20
thế giới thực màn hình
l r
b
b
Công thức cho điểm
2
VV
WW
VV
)
2
WW
P(P
2
VV
WW
VV
)
2
WW
P(P
hình màn thực giới Thế
bt
bt
btbt
y
'
y
lr
lr
lrlr
x
'
x
+
+
−
−+
−=
+
+
−
−+
−=
→
Trang 21
2
WW
VV
WW
)
2
VV
P(P
2
WW
VV
WW
)
2
VV
P(P
thực giới Thế hình Màn
bt
bt
btbt'
yy
lr
lr
lrlr'
xx
+
+
−
−+
−=
+
+
−
−+
−=
→
Công thức cho đoạn thẳng
A
A’
Trang 22
B B’
thế giới thực màn hình
Công thức cho đa giác
Trang 23
thế giới thực màn hình
Hệ số méo
Khi xác lập cửa sổ window W và cửa sổ viewport V phải lưu ý đến hệ số 
“méo”
bt
bt
lr
lr
WW
VV
WW
VV
r
−
−
−
−
=
t
l r
t
W
V
Trang 24
thế giới thực màn hình
l r
b
b
Hệ số méo
Trang 25
Cài đặt
// Lưu thơng tin cửa sổ quan sát
struct TWindow2D {
double l, r, b, t;
};
// Lưu thơng tin cửa sổ hiển thị
struct TViewport2D {
int l, r, b, t;
Trang 26
};
// Khai báo các cửa sổ
TWindow2D W;
TViewport2D V;
Cài đặt
void SetWindow2D(double l, double r, double b, double t)
{
W.l = l;
W.r = r;
W.b = b;
W.t = t;
}
W
Trang 27
void SetViewport2D(int l, int r, int b, int t)
{
V.l = l;
V.r = r;
V.b = b;
V.t = t;
}
V
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;
}
Trang 28
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
Cài đặt
void Read_Convert_Draw_2D(CDC *pDC, char *filename)
{
ifstream f(filename);
if(f.fail()) return;
while(!f.eof())
{
char object[32];
f >> object;
if(strcmpi(object, “LINE”) == 0)
{
TPoint2D P1, P2;
đọc biến đổi xén chuyển tọa độ vẽ
Trang 29
CPoint Q1, Q2;
int r, g, b;
// Doc doan thang
f >> P1.x >> P1.y >> P2.x >> P2.y >> r >> g >> b;
// Chuyen toa do
Q1 = ConvertWorldToScreen2D(P1);
Q2 = ConvertWorldToScreen2D(P2);
// Ve doan thang
pDC->MoveTo(Q1);
pDC->LineTo(Q2);
}
}
}

File đính kèm:

  • pdfĐồ họa 2D - Qui trình hiển thị.pdf