Professional Documents
Culture Documents
Nội dung
• II. Mô hình 3D
Computer Graphics 2
I. Biến đổi 3D
3
Computer Graphics
I. Biến đổi 3D
y
Q(x’,y’,z’)
P(x,y,z)
z x
5
Computer Graphics
I. Biến đổi 3D
2. Phép đối xứng qua mặt phẳng xy Ma trận phép biến đổi
3. Phép đối xứng qua mặt phẳng xz Ma trận phép biến đổi
4. Phép đối xứng qua mặt phẳng zy Ma trận phép biến đổi
5. Phép đối xứng qua gốc tọa độ Ma trận phép biến đổi
6
Computer Graphics
I. Biến đổi 3D
z x
sx, sy, sz là hệ số tỷ lệ theo các trục x, y, z
Khi sx= sy= sz =s gọi là phép đồng dạng.
Trong phép biến đổi này, gốc O sẽ là ảnh chính nó và là tâm của phép biến
đổi tỷ lệ
7
Computer Graphics
I. Biến đổi 3D
8
Computer Graphics
I. Biến đổi 3D
8. Phép quay quanh trục tọa độ
Ký hiệu ma trận biểu diễn phép
quay quanh trục x , y , z một góc
là R(x, ), R(y, ), R(z, ) :
y
(a)
(b)
thành góc
dương nếu
y
nhìn về gốc tọa
Quay quanh trục z độ từ nửa trục
dương.
x
(c)
9
Computer Graphics
I. Biến đổi 3D
9. Quay quanh một trục bất kỳ y P1
k
• Giả sử trục quay được biểu diễn bởi đường thẳng k đi qua 2 điểm P0
P0 và P1.
kz
• Thực hiện phép quay quanh k: k’ x
d
• Thực hiện một số phép tịnh tiến, quay để k trùng với trục z: ky k’’
• Tịnh tiến k về gốc tọa độ (thành trục k’) với ma trận biến đổi kx
z
tr(-P0).
• Quay quanh trục x một góc để đặt k’ lên mặt phẳng xy
(thành trục k’’) với ma trận biến đổiø: R(x, ) .
• Quay quanh trục y một góc để đưa k’’ về trục z với ma trận
biến đổi là R(y,-).
• Quay quanh trục z một góc với ma trận biến đổi R(z, ).
• Thực hiện ngược lại các phép biến đổi sao cho k trở về vị trí
ban đầu, các ma trận biến đổi lần lượt là:
R(y,), R(x,-), tr(P0).
10
Computer Graphics
I. Biến đổi 3D
y P1
9. Quay quanh một trục bất kỳ k
Tóm lại: Phép quay một điểm quanh trục k bất kỳ với một P0
góc được phân tích thành các chuỗi biến đổi như sau: kz
k’ x
d
ky k’’
tr(-P0), R(x, ), R(y,-), R(z, ), R(y,), R(x, -), tr(P0). kx
z
Trong đó, góc quay , được xác định dựa trên cơ sở chiếu
k’ lên mặt phẳng yz. Ta có:
k=P0P1 ;
cos()=kz/d ; sin()=ky/d
cos()=kz/k ; sin()=kx/k
11
Computer Graphics
I. Biến đổi 3D
10. Phép biến đổi ngược: Là phép Undo của một phép biến đổi
• Ma trận nghịch đảo của phép tịnh tiến có được bằng cách thay đổi các hệ số tx, ty, tz
bằng -tx, -ty, -tz.
• Ma trận nghịch đảo của phép biến đổi tỷ lệ có được bằng cách thay thế các hệ số sx,
sy, sz bằng 1/sx, 1/sy, 1/sz
• Ma trận nghịch đảo của phép quay có được bằng cách thay góc bằng -.
12
Computer Graphics
I. Biến đổi 3D
• Nếu M1 biến đổi P thành P’ và M2 biến đổi P’ thành Q thì M=M1M2 sẽ biến đổi P thành Q.
• Ma trận của phép biến đổi kết hợp có thể được tính từ các ma trận của các phép biến đổi
thành phần
13
Computer Graphics
Bài tập
Bài 1: Cho vật thể 3D có tọa độ các điểm A (0, 3, 1), B (3, 3, 2), C (3, 0, 0), D (0, 0, 0). Hãy vẽ ảnh
của vật thể ABCD sau khi thực hiện phép tịnh tiến với khoảng cách 1 đối với trục X, 1 đối với trục Y
và 2 đối với trục Z.
• Giải:
• Tọa độ cũ của đối tượng = A (0, 3, 1), B (3, 3, 2), C (3, 0, 0), D (0, 0, 0)
• Vectơ tịnh tiển = (T x , T y , T z ) = (1, 1, 2)
• Đối với các tọa độ A (0, 3, 1)
• Cho tọa độ mới của A = (X mới , Y mới , Z mới ).
• Áp dụng các phương trình tịnh tiến, ta có
• X mới = X cũ + T x = 0 + 1 = 1
• Y mới = Y cũ + T y = 3 + 1 = 4
• Z mới = Z cũ + T z = 1 + 2 = 3
• Như vậy, tọa độ mới của A = (1, 4, 3).
Computer Graphics
Bài tập
Bài 1: Cho vật thể 3D có tọa độ các điểm A (0, 3, 1), B (3, 3, 2), C (3, 0, 0), D (0, 0, 0). Hãy vẽ ảnh
của vật thể ABCD sau khi thực hiện phép tịnh tiến với khoảng cách 1 đối với trục X, 1 đối với trục Y
và 2 đối với trục Z.
Computer Graphics
Bài tập
Bài 1: Cho vật thể 3D có tọa độ các điểm A (0, 3, 1), B (3, 3, 2), C (3, 0, 0), D (0, 0, 0). Hãy vẽ ảnh
của vật thể ABCD sau khi thực hiện phép tịnh tiến với khoảng cách 1 đối với trục X, 1 đối với trục Y
và 2 đối với trục Z.
Computer Graphics
Bài tập
Bài 2: Cho điểm đồng nhất (1, 2, 3). Áp dụng xoay 90 độ đối với trục X, Y và Z và tìm ra các điểm
tọa độ mới..
• Giải:
• Từ tọa độ cũ = (X cũ , Y cũ , Z cũ ) = (1, 2, 3)
• Góc quay = θ = 90º
• Đối với Xoay trục X-
• Gọi tọa độ mới sau khi quay = (X mới , Y mới , Z mới ).
• Áp dụng các phương trình quay, chúng ta có-
• X mới = X cũ = 1
• Y mới = Y cũ x cosθ - Z cũ x sinθ = 2 x cos90 ° - 3 x sin90 ° = 2 x 0 - 3 x 1 = -3
• Z mới = Y cũ x sinθ + Z cũ x cosθ = 2 x sin90 ° + 3 x cos90 ° = 2 x 1 + 3 x 0 = 2
• Như vậy, tọa độ mới sau khi quay = (1, -3, 2).
Computer Graphics
Bài tập
Bài 2: Cho điểm đồng nhất (1, 2, 3). Áp dụng xoay 90 độ đối với trục X, Y và Z và tìm ra các điểm
tọa độ mới..
Computer Graphics
Bài tập
Bài 2: Cho điểm đồng nhất (1, 2, 3). Áp dụng xoay 90 độ đối với trục X, Y và Z và tìm ra các điểm
tọa độ mới..
Computer Graphics
Bài tập
Bài 3: Cho vật thể 3D có tọa độ các điểm A (0, 3, 3), B (3, 3, 6), C (3, 0, 1), D (0, 0, 0). Vẽ ảnh của
vật thể ABCD khi thay đổi tham số tỷ lệ 2 theo trục X, 3 theo trục Y và 3 theo trục Z
Computer Graphics
Bài tập
Bài 3: Cho vật thể 3D có tọa độ các điểm A (0, 3, 3), B (3, 3, 6), C (3, 0, 1), D (0, 0, 0). Vẽ ảnh của
vật thể ABCD khi thay đổi tham số tỷ lệ 2 theo trục X, 3 theo trục Y và 3 theo trục Z
Computer Graphics
Bài tập
Bài 3: Cho vật thể 3D có tọa độ các điểm A (0, 3, 3), B (3, 3, 6), C (3, 0, 1), D (0, 0, 0). Vẽ ảnh của
vật thể ABCD khi thay đổi tham số tỷ lệ 2 theo trục X, 3 theo trục Y và 3 theo trục Z
Computer Graphics
Bài tập
Bài 4: Cho tam giác 3D có tọa độ các điểm A (3, 4, 1), B (6, 4, 2), C (5, 6, 3). Áp dụng phản xạ trên
mặt phẳng XY và tìm ra tọa độ mới của đối tượng.
Computer Graphics
Bài tập
Bài 4: Cho tam giác 3D có tọa độ các điểm A (3, 4, 1), B (6, 4, 2), C (5, 6, 3). Áp dụng phản xạ trên
mặt phẳng XY và tìm ra tọa độ mới của đối tượng.
như hình bên đây, sau khi xoay quanh một trục
xác định bởi điểm A(2, 1, 0) và B(3, 3, 1). (0, 1, 1) (1, 1, 1)
Góc xoay là 900 ngược chiều kim đồng hồ. (1, 0, 0)
(0, 0, 0) x
z (0, 0, 1) (1, 0, 1)
Computer Graphics
II. Mô hình 3D
26
Computer Graphics
II. Mô hình 3D
Mô hình khung kết nối (Wire Frame Model) thể hiện hình dáng của một đối
tượng 3D bởi 2 danh sách:
• Danh sách các đỉnh: lưu tọa độ các đỉnh.
• Danh sách các cạnh: lưu 2 điểm (đỉnh): đầu và cuối của mỗi cạnh
27
Computer Graphics
II. Mô hình 3D
Danh sách cạnh
1. Mô hình khung kết nối (tiếp theo) Cạnh Đầu Cuối
1 1 2
z 2 2 3
4 3 3 4
3
5 4 4 5
9 Danh sách đỉnh 5 5 1
10 8
6 6 7
1
Đỉnh x y z 7 7 8
1 0 0 0 8 8 9
1 2 y 2 0 1 0 9 9 10
6 1 3 0 1 1 10 10 6
7 4 0 0.5 1.5 11 1 6
x 1 5 0 0 1 12 2 7
6 1 0 0 13 3 8
7 1 1 0 14 4 9
8 1 1 1 15 5 10
9 1 0.5 1.5 16 2 5
10 1 0 1 17 1 3 28
Computer Graphics
II. Mô hình 3D
Biểu diễn Mô hình Khung nối kết bằng cấu trúc dữ liệu mảng như sau:
31
Computer Graphics
II. Mô hình 3D
2 x2 y2 z2 2 4,5,6 Mặt 4
Mặt 3 3
3 x3 y3 z3 3 1,4,6,3
4 x4 y4 z4 4 3,6,5,2 5
5 x5 y5 z5 5 1,2,5,4 4
6 x6 y6 z6 Mặt 2
6
32
II. Mô hình 3D
Biểu diễn Mô hình Mặt đa giác bằng cấu trúc dữ liệu mảng như sau:
33
III. Phép chiếu
34
III. Phép chiếu
2. Các loại phép chiếu đối tượng 3D sang 2D: Có 02 loại cơ bản
• Chiếu song song (parallel projection)
• Chiếu các điểm trên đối tượng theo đường song song
• Sử dụng nhiều trong đồ họa máy tính, vẽ kỹ thuật
• Chiếu phối cảnh (perspective projection)
• Chiếu các điểm trên đối tượng theo đường hội tụ đến tâm chiếu
• Sử dụng nhiều trong các trò chơi (cảm giác thực hơn)
Tâm chiếu
Tia chiếu
35
III. Phép chiếu
• Nếu hướng của tia chiếu hợp với mặt phẳng chiếu một góc khác 90o: gọi là phép chiếu
xiêng (oblique projection).
z z
a
P(x, y, z)
P(x, y, z)
x’
Mặt phẳng chiếu x
Mặt phẳng chiếu
o P’(x’, y’) o P’’ Q
y
y’
x y x
y
36
III. Phép chiếu
z a
2.1.1. Phép chiếu trực giao:
P(x, y, z)
Để chiếu điểm P(x, y, z) lên mặt phẳng chiếu
thành điểm P’(x’, y’) đơn giản bỏ đi thành
Mặt phẳng chiếu
phần z o P’(x’, y’)
x y
z y
Nhìn từ phía z
trên
x
z x
y
Nhìn từ mặt
x Nhìn từ phía bên
trước
y
37
III. Phép chiếu
38
III. Phép chiếu
1 tâm chiếu: Mặt chiếu song 2 tâm chiếu: Mặt chiếu song 3 tâm chiếu: Mặt chiếu không song
song với hai trục tọa độ song với một trục tọa độ song với bất kỳ trục tọa độ nào
39
III. Phép chiếu
Tương tự Và z’= 0
40
III. Phép chiếu
Tâm chiếu
Tia chiếu
Nhận xét:
• Phép chiếu phối cảnh không giữ nguyên hình dạng của vật thể.
• Vật ở trước mặt phẳng chiếu thì được phóng lớn, sau mặt phẳng chiếu thì bị thu nhỏ.
Vât ở xa thì trông nhỏ, ở gần thì trông lớn.
• Ta có thể xem phép chiếu song song như là một phép chiếu phối cảnh nhưng có tâm
chiếu ở xa vô cực
41
IV. Quan sát đối tượng 3D
Khi mô tả việc quan sát một vật thể trong không gian ta cần lưu ý :
• Vật thể được chiếu lên một hệ theo quy tắc bàn tay phải (O,X,Y,Z)
• Mắt nằm ở gốc của một hệ theo quy tắc bàn tay trái (O’,X0,Y0,Z0)
• Mặt phẳng chiếu vuông góc với đường thẳng OO’
• Trục Z0 của hệ toạ độ thứ 2 hướng vào gốc O. Hệ toạ độ thứ hai có tên là hệ toạ độ quan sát.
Z Y0 X0
X O’(M,N,P)
Y
Z0
O
Y
X
Màn hình
• Phép biến đổi một điểm P(x,y,z) trong hệ toạ độ thứ nhất sang P’(x0,y0,z0) trong hệ toạ độ thứ
hai rồi chuyển sang toạ độ trên mặt phẳng quan sát
42
IV. Quan sát đối tượng 3D
O’
Ma trận của phép tịnh tiến (Lấy nghịch đảo): Y1
O
X1 Y
A=
X
43
IV. Quan sát đối tượng 3D
• Bước 2: Quay hệ (X1,Y1,Z1) một góc -‘ (‘=900 - ) quanh trục Z1 theo kim đồng hồ.
Phép quay này làm cho trục âm của Y1 cắt trục Z.
Z Z1 Z2
Z
O’ O’
-’ Y1
O Y2
O X2
Y
X1 Y
X
X
44
IV. Quan sát đối tượng 3D
•Bước 2: Gọi Rz là ma trận tổng quát của phép quay quanh trục Z.
Vì đây là phép quay hệ trục nên phải dùng ma trận nghịch đảo RZ-1z. Z2
O’
R-1 z = Y2
O X2
Y
X
45
IV. Quan sát đối tượng 3D
• Bước 3: Quay hệ (X2,Y2,Z2) một góc 900 + quanh trục X2. Phép biến đổi này sẽ làm
cho trục Z2 hướng đến gốc O.
Y3
Z Z2 Z
900 +
O’ O’
Y2 Z3
O X2 O X3
Y
Y
X
X
46
IV. Quan sát đối tượng 3D
• Bước 3:
Ta có: Y3
Z
R-1x =
O’
Z3
Thay góc a = 900 + ,
O X3
ta có: Cos(900 + ) = -Sin() Y
và Sin(900 + ) = Cos()
C=
Đổi hướng trục X3 bằng cách đổi dấu các phần tử của cột X.
Ta nhận được ma trận: Z Y0
1 0 0 0 X0
D= 0 1 0 0
O’
0 0
0 1
O Z0
0 1
0 0 Y
48
IV. Quan sát đối tượng 3D
TÓM LẠI
Một điểm trong không gian biểu diễn trong hệ quan sát có dạng:
(x0 ,y0 ,z0 ,1) = (x, y, z, 1) A B C D Z Y0
X0
Gọi T = A B C D, ta tính được:
O’
O Z0
T= Y
49
IV. Quan sát đối tượng 3D
x’ x'
P0
x0 X0
X0 Mặt chiếu
Gọi D là khoảng cách từ mặt phẳng chiếu đến mắt(gốc tọa độ).
Ta có: x'/x0 = D/z0 và y’/y0 = D/z0
hay x’= x0.D/z0 và y’= y0.D/z0
50
IV. Quan sát đối tượng 3D
Nếu z>D thì ảnh thu nhỏ (hội tụ), ngược lại ảnh được phóng lớn.
Mắt
Vật thể
• Phép chiếu song song: Xem như tâm chiếu ở xa vô cực, ta có:
x' = x0 và y’ = y0
51
IV. Quan sát đối tượng 3D
• 4 giá trị ảnh hưởng đến phép chiếu vật thể 3D:
+ Các góc ,
+ Khoảng cách R từ O đến O’
+ Khoảng cách D từ O’ đến mặt phẳng quan sát.
Z Y0 X0
X O’(M,N,P)
Y
Z0
O
Y
X
Màn hình
• Như vậy:
-Tăng giảm sẽ quay vật thể trong mặt phẳng (XY).
-Tăng giảm sẽ quay vật thể lên xuống.
-Tăng giảm R để quan sát vật từ xa hay gần.
-Tăng giảm D để phóng to hay thu nhỏ ảnh.
52
V. Biểu diễn đường, mặt cong
• 1. Đường cong
• 2. Mặt cong
53
Computer Graphics
V. Biểu diễn đường, mặt cong
1. Đường cong
• Cách biểu diễn
• Đường cong bất kỳ có thể biểu diễn bới ma trận điểm
• Cần số lượng điểm vô cùng lớn để biểu diễn chính xác hình dạng
• Sử dụng hàm đa thức để thể hiện hình dạng đường cong
• Dạng tổng quát của hàm đa thức
Hay M=(1-t).A+t.B
Khi t=0 thì MA
t=1 thì MB
Nếu 0t1 thì M thuộc đoạn AB, Phương trình thm số AB là:
P(t)=(1-t).A+t.B vôùi 0t1
Hay P(t) = (X(t), Y(t))
55
Computer Graphics
V. Biểu diễn đường, mặt cong
• Bài toán: Cho n+1 điểm p0, p1, p2,….,pn được gọi là các điểm kiểm soát (điểm điều khiển).
Xây dựng đường cong trơn đi qua 2 điểm p và pn được giới hạn trong bao lồi do n +1 điểm
trên tạo ra.
• Thuật toán Casteljau
• Để xây dựng đường cong P(t), ta dựa trên một dãy các điểm cho trước rồi tạo ra giá trị
P(t) ứng với mỗi giá trị t nào đó.
• Phương pháp này tạo ra đường cong dựa trên một dãy các bước nội suy tuyến tính hay
nội suy khoảng giữa (In-Betweening).
56
Computer Graphics
V. Biểu diễn đường, mặt cong
59
Computer Graphics
V. Biểu diễn đường, mặt cong
• Trong đó: P(t) là một điểm trong mặt phẳng hoặc trong không gian.
Bkn(t) gọi là đa thức Bernstein, được cho bởi công thức:
với n k
• Mỗi đa thức Bernstein có bậc là n. Thông thường ta còn gọi các Bkn(t) là các hàm trộn
(blending function).
60
Computer Graphics
V. Biểu diễn đường, mặt cong
• Trong trường hợp này, khối đa diện kiểm soát sẽ có (m+1).(n+1) đỉnh.
61
Computer Graphics
V. Biểu diễn đường, mặt cong
• Để tạo ra một đường cong Bezier từ một dãy các điểm kiểm soát ta áp dụng phương pháp lấy
mẫu hàm p(t) ở các giá trị cách đều nhau của tham số t, ví dụ có thể lấy ti = i/m, i=0,1,...,m.
• Khi đó ta sẽ được các điểm P(ti) từ công thức Bezier. Nối các điểm này bằng các đoạn thẳng
ta sẽ được đường cong Bezier gần đúng.
62
Computer Graphics
V. Biểu diễn đường, mặt cong
typedef struct {
int x; int y ;
}CPoint;
int fact int n){
if (n == 0) return 1;
else return n*fact(n - 1);
}
float power(float a, int n){
if (n==0) return 1;
else return a*power(a,n-1);
}
63
Computer Graphics
V. Biểu diễn đường, mặt cong
64
Computer Graphics
V. Biểu diễn đường, mặt cong
65
Computer Graphics
V. Biểu diễn đường, mặt cong
Mặt được tạo bằng cách quét một đường thẳng trong không gian theo cách nào đó.
P1(umax)
P1(u)
P1(umin)
P P0(umax)
vc
P0(u)
P0(umin)
66
Computer Graphics
V. Biểu diễn đường, mặt cong
P P0(umax)
vc
P0(u)
P0(umin) 67
Computer Graphics
V. Biểu diễn đường, mặt cong
P1(umax)
3. Mặt có quy tắc (tt)
P1(u)
P1(umin)
P P0(umax)
vc
• Đặt biệt: P0(u)
P0(umin)
• Nếu v=0 và u thay đổi thì P di chuyển trên đường p0(u)
• Nếu v=1 và u thay đổi thì P di chuyển trên đường p1(u)
• Nếu v=vc và u thay đổi thì P di chuyển trên cung song song với p0(umin) p0(umax) gọi là
đường đồng mức theo v.
• Nếu u=uc và v thay đổi thì P di chuyển trên đoạn thẳng p0(uc) p1(uc) gọi là đường đồng mức
theo u.
68
Computer Graphics
V. Biểu diễn đường, mặt cong
P1(umax) P1(u)
P1(u)
P1(umin)
P0(u)
P P0(umax)
vc
P1(u)
P0(u)
P0(umin)
69
Computer Graphics
V. Biểu diễn đường, mặt cong
70
Computer Graphics
V. Biểu diễn đường, mặt cong
Vậy: Với
71
Computer Graphics
V. Biểu diễn đường, mặt cong
73
Computer Graphics
V. Biểu diễn đường, mặt cong
Mặt nón
Tạo bằng cách quay đường cong C quanh một trục náo đó.
Giả sử: Đường con C thuộc mặt phẳng xOz, trục quay là trục z.
O’
Gọi M(x, y, z) là điểm thuộc C. u
M
M’
Ta có: M(X(v),0,Z(v))
O
Cho M quay quanh trục z một góc u M thuộc mặt phẳng z=Z(v) X
Y
Gọi ảnh M qua phép quay là M’(x, y, z)
Tính M‘(x,y,z) qua X(v), Z(v) và u.
Ta có: O’M=O’M’=X(v)
Hay: với
75
Computer Graphics
V. Biểu diễn đường, mặt cong
z
3. Mặt có quy tắc (tt)
• Mặt cầu
Mặt cầu với mặt cầu tâm O bán kính r thì C y
là ½ đường tròn trong mặt phẳng xOz.
Ta có: X(v)=r.cos(v);
x
Z(v)=r.sin(v)
Z
M’
Z(v)
r
v M
với X(v) X
76
Computer Graphics
V. Biểu diễn đường, mặt cong
Mặt Cầu
void DrawSphere(float R){
Point3D P; Point2D P1; double Delta_U,Delta_V,u,v,Pi_2;
Pi_2 = M_PI/2; Delta_U = 0.1; Delta_V = 0.1;
for (v=-Pi_2; v<Pi_2 ;v+=Delta_V){
for (u=0; u<2*M_PI; u+=Delta_U){
P.x = R*cos(u)*cos(v); P.y = R*sin(u)*cos(v);
P.z = R*sin(v); P1 = Chieu(KieuChieu,P);
putpixel(xc+P1.x,yc+P1.y,GREEN);
}
}
}
77
Computer Graphics
V. Biểu diễn đường, mặt cong
3. Mặt có quy tắc (tt)
• Mặt tròn xoay
Mặt Ellipsoid: với
Mặt Hypeboloid:
78
Computer Graphics
V. Biểu diễn đường, mặt cong
3. Mặt có quy tắc (tt)
• Mặt tròn xoay
Phương pháp chính ở đây là vẽ các đường đồng mức theo u và v.
Để vẽ một đường đồng mức u tại giá trị u’ khi v chạy từ VMin đến VMax ta làm như sau:
-Tạo một tập hợp các giá trị v[i] [VMin ,VMax], xác định vị trí
P[i] = (X(u’,v[i]), Y(u’,v[i]), Z(u’,v[i])).
-Vẽ các đường gấp khúc dựa trên các điểm 2D P’[i].
79
Computer Graphics
V. Biểu diễn đường, mặt cong
TÓM LẠI: vẽ một mặt cong, ta thực hiện các bước sau
80
Computer Graphics
Computer Graphics 81