You are on page 1of 81

Kỹ thuật đồ họa 3D

Nội dung

• I. Các phép biến đổi 3D

• II. Mô hình 3D

• III. Phép chiếu

• IV. Quan sát đối tượng 3D

• V. Biểu diễn đường, mặt cong

Computer Graphics 2
I. Biến đổi 3D

• 1. Các phép biến đổi hình học cơ sở

• 2. Phép biến đổi ngược

• 3. Kết hợp các phép biến đổi

3
Computer Graphics
I. Biến đổi 3D

Trong hệ tọa độ thuần nhất


• Phép biến đổi affine 3D biến điểm P(x,y,z) thành Q(x’, y’, z’) có dạng: Q = P x M

• M là ma trận biến đổi. Có dạng:

Một số tính chất của các phép biến đổi ba chiều:


• Tính chất đường thẳng được bảo toàn: một đường thẳng trong không gian ba chiều khi biến đổi sẽ thành
một đường thẳng.
• Tính song song được bảo toàn: hai đường thẳng song song khi biến đổi cũng sẽ thành hai đường thẳng
song song.
• Tính tỉ lệ về khoảng cách được bảo toàn: ảnh của một điểm P chia đoạn thẳng AB theo tỉ lệ f, sẽ chia
đoạn thẳng A’B’ theo tỉ lệ f, với A’B’ là ảnh của đoạn thẳng AB.
4
Computer Graphics
I. Biến đổi 3D

1. Phép tịnh tiến

Ma trận biến đổi tịnh tiến:

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

6. Phép biến đổi tỷ lệ với tâm gốc tọa độ O(0,0,0)


Ma trận biến đổi của phép biến đổi tỷ lệ
y

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

7. Phép biến đổi tỷ lệ với tâm (x0, y0, z0)


• Tịnh tiến tâm (x0, y0, z0) về gốc tọa độ O(0,0,0).
• Biến đổi tỷ lệ có tâm gốc tọa độ O(0,0,0).
• Tịnh tiến ngược từ tâm O(0,0,0) về tâm ban đầu
 Ma trận của phép biến đổi tỷ lệ tâm (x0, y0, z0) như sau: :

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

Quay quanh trục x z

(a)

Qui ước: Quay


y
ngược chiều
kim đồng hồ
Quay quanh trục y theo trục sẽ tạo
x

(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

• Tất cả các phép biến đổi đều có ma trận nghịch đảo

• 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

11. Kết hợp các phép biến đổi

• Tương tự như trong trường hợp biến đổi 2D.

• 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.

• Đối với tọa độ B (3, 3, 2) • Đối với tọa độ C (3, 0, 0)


• Cho tọa độ mới của B = (X mới , Y mới , Z mới ) • Cho tọa độ mới của C = (X mới , Y mới , Z mới ).
• Áp dụng các phương trình tịnh tiến, ta có • Áp dụng các phương trình tịnh tiến, ta có
• X mới = X cũ + T x = 3 + 1 = 4 • X mới = X cũ + T x = 3 + 1 = 4
• Y mới = Y cũ + T y = 3 + 1 = 4 • Y mới = Y cũ + T y = 0 + 1 = 1
• Z mới = Z cũ + T z = 2 + 2 = 4 • Z mới = Z cũ + T z = 0 + 2 = 2
• Như vậy, tọa độ mới của B = (4, 4, 4). • Như vậy, tọa độ mới của C = (4, 1, 2).

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.

• Đối với tọa độ D (0, 0, 0) • Vẽ trên trục tọa độ 3D


• Cho tọa độ mới của D = (X mới , Y mới , Z mới ). • Vẽ tọa độ 4 điểm ABCD
• Áp dụng các phương trình tịnh tiến, ta có • Vẽ tọa độ 4 điểm ABCD mới
• X mới = X cũ + T x = 0 + 1 = 1
• Y mới = Y cũ + T y = 0 + 1 = 1
• Z mới = Z cũ + T z = 0 + 2 = 2
• Như vậy, tọa độ mới của D = (1, 1, 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..
• 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..

• Đối với quay trục Y-


• 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 = Z cũ x sinθ + X cũ x cosθ = 3 x sin90 ° + 1 x cos90 ° = 3 x 1 + 1 x 0 = 3
• Y mới = Y cũ = 2
• Z mới = Y cũ x cosθ - X cũ x sinθ = 2 x cos90 ° - 1 x sin90 ° = 2 x 0 - 1 x 1 = -1
• Như vậy, tọa độ mới sau khi quay = (3, 2, -1)

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..

• Đối với xoay trục Z-


• 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ũ x cosθ - Y cũ x sinθ = 1 x cos90 ° - 2 x sin90 ° = 1 x 0 - 2 x 1 = -2
• Y mới = X cũ x sinθ + Y cũ x cosθ = 1 x sin90 ° + 2 x cos90 ° = 1 x 1 + 2 x 0 = 1
• Z mới = Z cũ = 3
• Như vậy, tọa độ mới sau khi quay = (-2, 1, 3)

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

• Giải: • Đối với Tọa độ A (0, 3, 3)


• Tọa độ cũ của đối tượng = A (0, 3, 3), B • Cho tọa độ mới của A sau khi chia tỷ lệ = (X mới ,
(3, 3, 6), C (3, 0, 1), D (0, 0, 0) Y mới , Z mới ).
• Hệ số tỷ lệ dọc theo trục X = 2 • Áp dụng các phương trình tỉ lệ, chúng ta có-
• Hệ số tỷ lệ dọc theo trục Y = 3 • X mới = X cũ x S x = 0 x 2 = 0
• Hệ số tỷ lệ dọc theo trục Z = 3 • Y mới = Y cũ x S y = 3 x 3 = 9
• Z mới = Z cũ x S z = 3 x 3 = 9
• Như vậy, tọa độ mới của góc A sau khi chia tỷ lệ
= (0, 9, 9)

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

• Đối với các tọa độ B (3, 3, 6) • Đối với tọa độ C (3, 0, 1)


• Cho tọa độ mới của B sau khi scale = • Cho tọa độ mới của C sau khi chia tỷ lệ =
(X mới , Y mới , Z mới ). (X mới , Y mới , Z mới ).
• Áp dụng các phương trình tỉ lệ, chúng • Áp dụng các phương trình tỉ lệ, chúng ta
ta có- có-
• X mới = X cũ x S x = 3 x 2 = 6 • X mới = X cũ x S x = 3 x 2 = 6
• Y mới = Y cũ x S y = 3 x 3 = 9 • Y mới = Y cũ x S y = 0 x 3 = 0
• Z mới = Z cũ x S z = 6 x 3 = 18 • Z mới = Z cũ x S z = 1 x 3 = 3
• Như vậy, tọa độ mới của góc B sau khi • Như vậy, tọa độ mới của góc C sau khi
chia tỷ lệ = (6, 9, 18). chia tỷ lệ = (6, 0, 3).

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

• Đối với tọa độ D (0, 0, 0) • Vẽ trong tọa độ 3D


• Cho tọa độ mới của D sau khi chia tỷ lệ • Các điểm ABCD
= (X mới , Y mới , Z mới ).
• Các điểm ABCD mới
• Áp dụng các phương trình tỉ lệ, chúng
ta có-
• X mới = X cũ x S x = 0 x 2 = 0
• Y mới = Y cũ x S y = 0 x 3 = 0
• Z mới = Z cũ x S z = 0 x 3 = 0
Như vậy, tọa độ mới của góc D sau khi
chia tỷ lệ = (0, 0, 0).

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.

• Giải: • Đối với các tọa độ A (3, 4, 1)


• Tọa độ góc cũ của tam giác = A (3, 4, • Cho tọa độ mới của góc A sau phản xạ =
1), B (6, 4, 2), C (5, 6, 3) (X mới , Y mới , Z mới ).
• Sự phản chiếu phải được thực hiện • Áp dụng các phương trình phản xạ, chúng
trên mặt phẳng XY ta có-
• X mới = X cũ = 3
• Y mới = Y cũ = 4
• Z mới = -Z cũ = -1
• Như vậy, tọa độ mới của góc A sau phản
xạ = (3, 4, -1)

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.

• Đối với các tọa độ B (6, 4, 2) • Đối với Tọa độ C (5, 6, 3)


• Cho tọa độ mới của góc B sau phản xạ • Cho tọa độ mới của góc C sau phản xạ = (X mới ,
= (X mới , Y mới , Z mới ). Y mới , Z mới ).
• Áp dụng các phương trình phản xạ, • Áp dụng các phương trình phản xạ, chúng ta có-
chúng ta có- • X mới = X cũ = 5
• X mới = X cũ = 6 • Y mới = Y cũ = 6
• Y mới = Y cũ = 4 • Z mới = -Z cũ = -3
• Như vậy, tọa độ mới của góc C sau phản xạ = (5,
• Z mới = -Z cũ = -2
6, -3).
• Như vậy, tọa độ mới của góc B sau • Như vậy, tọa độ mới của tam giác sau phản xạ =
phản xạ = (6, 4, -2). A (3, 4, -1), B (6, 4, -2), C (5, 6, -3).
Computer Graphics
Bài tập

• Bài làm thêm:


• Bài 5: 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 XZ và tìm ra tọa độ mới của đối tượng.
• Bài 6: 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 YZ và tìm ra tọa độ mới của đối tượng.
• Bài 7: Một hình chóp A(0, 0, 0), B(1, 0, 0), C(0, 1, 0) và D(0, 0, 1) được xoay một góc 450 quanh
đoạn thẳng L được xác định theo hướng V= j + k và đi qua đỉnh C. Xác định tọa độ các đỉnh
sau phép xoay. y
• Bài 8: Tìm các tọa độ mới của khối vuông đơn vị (0, 1, 0)
(1, 1, 0)

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

• 1. Mô hình khung kết nối (Wire Frame Model)

• 2. Mô hình các mặt đa giác (Polygon Mesh Model)

26
Computer Graphics
II. Mô hình 3D

1. Mô hình khung kết nối

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

1. Mô hình khung kết nối (tiếp theo)


Danh sách đỉnh Danh sách cạnh
Z
12
Đỉnh X Y Z Cạnh Đầu Cuối
(-1,-1,3)
1 1 1 -3 1 1 5
10 (-1,-1,2)
2 -1 1 -3 2 2 6
11
(1,-1,3) 3 -1 -1 -3 3 3 12
9 4 1 -1 -3 4 4 11
(1,-1,2) 7 1 6
(-1,-1,0) (-1,1,0) 5 1 1 0 5 5 6
1 Y
6 -1 1 0 6 6 7
8
(1,-1,0) 5 7 -1 -1 0 7 7 8
(1,1,0)
8 1 -1 0 8 8 5
3 2
X (-1,-1,-3) (-1,1,-3) 9 1 -1 2 9 9 10
10 -1 -1 2 10 11 12
4 1 11 1 -1 3
(1,-1,-3) (1,1,-3)
12 -1 -1 3
29
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:

typedef struct 3DPoint { // Cấu trúc điểm (đỉnh)


int x;
int y;
int z;
};
typedef struct EdgeType { // Cấu trúc cạnh
int beginP;
int endP;
};
typedef struct WireFrame { //Cấu trúc mô hình
int numVertex, numEdge;
3DPoint vertex[MAX];
EdgeType edge[MAX];
};
30
Computer Graphics
II. Mô hình 3D

2. Mô hình mặt đa giác


Mô hình mặt đa giác (Polygon Mesh model) thể hiện hình dáng của một đối tượng 3D
bằng 2 danh sách:
• Danh sách các đỉnhLưu tọa độ các đỉnh
• Danh sách các mặt Lưu thứ tự các đỉnh tạo nên các mặt

31
Computer Graphics
II. Mô hình 3D

2. Mô hình mặt đa giác (tiếp theo)


Ví dụ: Mô tả vật thể như trong hình vẽ sau:

Danh sách đỉnh Danh sách mặt Mặt 1


2
Đỉnh X Y Z Mặt Thứ tự các đỉnh
1
1 x1 y1 z1 1 1,3,2 Mặt 5

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:

typedef struct 3DPoint{ // Cấu trúc điểm (đỉnh)


int x;
int y;
int z;
};
typedef struct FaceType{ // Cấu trúc mặt
int nFace;
int indexFace[MAX];
};
typedef struct FaceModel{ // Cấu trúc mô hình
3DPoint vertex[MAX];
FaceType face[MAX];
};

33
III. Phép chiếu

1. Một số khái niệm


• Phép chiếu là phương pháp dùng để vẽ các mô hình 3D
• Phép chiếu biến đổi hệ tọa độ n-chiều sang hệ tọa độ m-chiều, trong đó m<n.
Trong đồ họa máy tính thường sử dụng biến đổi 3D  2D
• Tia chiếu: là đường thẳng đi qua các điểm trên đối tượng đến mặt phẳng để tạo
ảnh 2D
• Mặt phẳng chiếu: nơi hình thành ảnh 2D của các đối tượng 3D

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)

Mặt phẳng chiếu Mặt phẳng chiếu

Tâm chiếu
Tia chiếu
35
III. Phép chiếu

2.1. Phép chiếu song song (Parallel projective)


• Nếu hướng của tia chiếu vuông góc với mặt phẳng chiếu: gọi là phép chiếu trực giao
(orthographic projection)

• 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

2.1.2. Phép chiếu xiêng


z
Điểm P(x,y,z) sẽ có ảnh P’. Trong đó: P(x, y, z)
• P” là hình chiếu của P qua phép trực giao
x’
•  Là góc tạo bởi tia chiếu và P’P’’ Mặt Phẳng chiếu x

•  Là góc tạo bởi P’P’’ với trục y o P’’ P’

 Biết P, ,  thì có thể xác định được điểm chiếu y
y’
P’(x’,y’,z’). x
y

38
III. Phép chiếu

2.2 Phép chiếu phối cảnh (Perspective projection)


• Các tia chiếu gặp nhau tại tâm chiếu (vanishing point)

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

2.2. Phép chiếu phối cảnh (Tiếp theo)


• Các tia chiếu hội tụ về về một điểm duy nhất gọi là mắt nhìn
• Phép chiếu phụ thuộc vào vị trí tương đối của mắt nhìn và mặt phẳng quan sát
y
• Giả sử: P(x,y,z)

• Mặt phẳng được đặt tại z = 0 y’ P’


z
• Tâm phép chiếu được đặt trên trục z với khoảng cách e
• P nằm trước mắt nhìn x’ x
x
z
E(0,0,e)
Ta có

Tương tự Và z’= 0
40
III. Phép chiếu

2.2. Phép chiếu phối cảnh (Tiếp theo)


Mặt phẳng chiếu Mặt phẳng 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

• Bước 1: Tịnh tiến gốc O thành O’. Z Z1

O’
Ma trận của phép tịnh tiến (Lấy nghịch đảo): Y1
O

X1 Y

A=
X

 Hệ (X,Y,Z) biến đổi thành hệ (X1,Y1,Z1).

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

Thay a = -’ . Theo các phép toán lượng giác:


Sin(-') = -Sin(') = -Sin(900 - ) = -Cos()
Cos(-') = Cos(') = Cos(900-) = Sin()

Nên ma trận của phép quay tìm được sẽ có dạng: B =

hệ (X1,Y1,Z1) biến đổi thành hệ (X2,Y2,Z2).

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() 

Nên ma trận tìm được sẽ có dạng: X

C=

 hệ (X2,Y2,Z2) biến đổi thành hệ (X3,Y2,Z3).


47
IV. Quan sát đối tượng 3D

• Bước 4: Biến đổi hệ trực tiếp (X3,Y3,Z3) thành hệ gián tiếp.

Đổ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

 hệ (X3,Y3,Z3) biến đổi thành hệ (X0,Y0,Z0).

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

Vậy: x0 = -x  Sin() + y  Cos()


y0 = -x  Cos()  Sin() - y  Sin()  Sin() + z  Cos()
z0 = -x  Cos()  Cos() - y  Sin()  Cos() - z  Sin() + R

49
IV. Quan sát đối tượng 3D

• Chiếu ảnh trong hệ quan sát lên màn hình:


• Phép chiếu phối cảnh Y0 P0
Y0 y'

P0(x0 ,y0 ,z0 )


O z0 Z0
D
P’(x’,y’) Mặt chiếu
O’ Z0 z0 Z0
D O
z0

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.

Thu nhỏ Phóng to

Mắt
Vật thể

Màn hình Màn hình

• 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

• n – nguyên dương, a0, a1, ..., an là số thực


• Đa thức thuận tiện cho tính toán bằng máy tính
• Trong đồ họa đòi hỏi xác định tiếp tuyến, pháp tuyến cho đường cong.
Đa thức dễ dàng tính vi phân.
54
Computer Graphics
V. Biểu diễn đường, mặt cong
B
1. Đường cong
Phương trình tham số củ đường thẳng M
Gọi M(x,y) là điểm nằm trên đường thẳng AB, A
Ta có:

Hay M=(1-t).A+t.B
Khi t=0 thì MA
t=1 thì MB
Nếu 0t1 thì M thuộc đoạn AB, Phương trình thm số AB là:
P(t)=(1-t).A+t.B vôùi 0t1
Hay P(t) = (X(t), Y(t))
55
Computer Graphics
V. Biểu diễn đường, mặt cong

2. Đường cong Bezier

• 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

2. Đường cong Bezier (Tiếp theo)


• Thuật toán Casteljau
Với 3 điểm P0 , P1 , P2 có thể xây dựng một Parabol nội suy từ 3 điểm này bằng cách chọn một giá trị t 
[0, 1] rồi chia đoạn P0P1 theo tỉ lệ t, ta được điểm P01 trên P0P1. Tương tự, chia tiếp P1P2 cũng theo tỉ lệ t,
ta được P11. Nối P01 và P11, lại lấy điểm trên P01P11 chia theo tỉ lệ t, được P02. Tập điểm P02 chính là đường
cong p(t).
Biểu diễn bằng phương trình: P1
P01(t) = (1-t).P0 + t.P1 (1)
P11(t) = (1-t).P1 + t.P2 (2) P01 P02
P02(t) = (1-t).P01 + t.P11 (3)
Trong đó t  [0, 1] P11
Thay (1), (2) vào (3) ta được: P0
P(t) = P02(t) = (1-t)2.P0 + 2t.(1-t).P1 + t2.P2 P2
Đây là một đường cong bậc 2 theo t nên nó là một Parabol.
57
Computer Graphics
V. Biểu diễn đường, mặt cong
2. Đường cong Bezier (Tiếp theo)
• Thuật toán Casteljau cho (n+1) điểm kiểm soát:

Giả sử ta có tập điểm: P0, P1, P2, ..., Pn


Với mỗi giá trị t cho trước, tạo điểm Pir(t) ở thế hệ thứ r, từ thế hệ thứ (r - 1) trước đó:
Pir(t) = (1-t).Pir-1(t) + t.Pi+1r-1(t) ( r=0,1,...,n và i=0,...,n-r)
Thế hệ cuối cùng:

là đường cong Bezier của các điểm P0,P1 ,P2,...,Pn


Các điểm Pi, i=0,1,...,n gọi là các điểm kiểm soát (điểm Bezier).
Đa giác tạo bởi các điểm kiểm soát gọi là đa giác kiểm soát (đa giác Bezier).
58
Computer Graphics
V. Biểu diễn đường, mặt cong
2. Đường cong Bezier (Tiếp theo)
• Thuật toán Casteljau cho (n+1) điểm kiểm soát:

Thế hệ cuối cùng:

59
Computer Graphics
V. Biểu diễn đường, mặt cong

2. Đường cong Bezier (Tiếp theo)


• Đường cong Bezier dựa trên (n+1) điểm kiểm soát P0 ,P1 , ...,Pn được cho bởi công
thức:

• 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

2. Đường cong Bezier (Tiếp theo)


• Đường cong Bezier dựa trên (n+1) điểm kiểm soát P0 ,P1 , ...,Pn được cho bởi công thức:

• Tương tự, đối với mặt Bezier ta có phương trình sau:

• 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

2. Đường cong Bezier (Tiếp theo)

• Để 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

2. Đường cong Bezier (Tiếp theo)


• Minh họa việc vẽ đường cong Bezier trong mặt phẳng:

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

float BernStein(float t,int n, int k){


float ckn,kq;
ckn = fact(n)/(fac(k)*fac(n - k));
kq = ckn*power(1 - t,n - k)*power(t,k);
return kq;
}
CPoint TPt(CPoint P[ ],float t, int n){
CPoint Pt; float B; int k;
Pt.x=0; Pt.y=0;
for (k = 0; k<=n; k++){
B = BernStein(t,n,k);
Pt.x = Pt.x + P[k].x*B; Pt.y = Pt.y + P[k].y*B;
}
return Pt;
}

64
Computer Graphics
V. Biểu diễn đường, mặt cong

void DrawBezier( int n, CPoint P[ ]) {


CPoint Pt; float dt,t,m; int i;
t=0; m=100; dt=1/m;
moveto(P[0].x,P[0].y);
for(i = 1; i<= m ; i++){
Pt=TPt(P,t,n);
lineto(Pt.x,Pt.y);
t = t + dt;
}
lineto(P[n].x,P[n].y);
}

65
Computer Graphics
V. Biểu diễn đường, mặt cong

3. Mặt có quy tắc

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

3. Mặt có quy tắc (tt)


Phương trình tổng quát
Gọi P0P1 là đoạn thẳng sinh ra mặt có quy tắt, và P  P0P1
Ta có: P(v)=(1-v)P0+v.P1 với v[0,1]
P0 di chuyển trên đường p0(u), P1 di chuyển trên đường p1(u)
Nên P thuộc mặt có quy tắc: P(u,v)=(1-v).p0(u)+v.P1(u)
Với uminuumax và 0v1
P1(umax)
P1(u)
P1(umin)

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

3. Mặt có quy tắc (tt)


P1(u)
Ví dụ: Mặt trụ: p0(u) là đáy dưới
P1(u) là đáy trên
Mặt nón: p0(u) là 1 điểm
P0(u)
P1(u) là đường tròn

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

3. Mặt có quy tắc (tt)


• Mặt trụ(Cylinder)
Mặt trụ là mặt được tạo ra khi một đường thẳng (đường sinh) được quét dọc theo một đường
cong p0(u) (đường chuẩn). Đường cong p0(u) nằm trên một mặt phẳng nào đó.
Gọi d là đường sinh, d=const.
p0(u) là đáy dưới
P1(u) là đáy trên
P1(u)
Suy ra: d= P1(u)- P0(u)
Ta có: p(u,v) = (1-v).P0(u)+v. P1(u)
= P0(u)+( P1(u)- P0(u)).v
= P0(u)+d.v
P0(u)
Vậy: p(u,v) = P0(u)+d.v

70
Computer Graphics
V. Biểu diễn đường, mặt cong

3. Mặt có quy tắc (tt)


• Mặt trụ(Cylinder)
Pt mặt trụï: p(u,v) = P0(u)+d.v
Dạng quen thuộc của mặt trụ là mặt trụ tròn: Trong mặt phẳng xOy, lấy P0(u) là đường tròn tâm O
bán kính r . P1(u)
y
Ta có: d=(0,0,h)
P0(u)=(r.cos(u), r.sin(u), 0) u
y x
P0(u)
x

Vậy: Với
71
Computer Graphics
V. Biểu diễn đường, mặt cong

void DrawCylinder(float R, float h){


Point3D P; Point2D P1;
double Delta_U,Delta_V,u,v;
Delta_U = 0.06; Delta_V = 0.03;
for (u=0; u<2*M_PI; u+=Delta_U){
for (v=0; v<1; v+=Delta_V){
P.x = R*cos(u) ; P.y = R*sin(u) ;
P.z = v*h; P1 = Chieu(KieuChieu,P);
putpixel(xc+P1.x,yc+P1.y,WHITE);
}
}
}
72
Computer Graphics
V. Biểu diễn đường, mặt cong

3. Mặt có quy tắc (tt)


• Mặt nón (Cone)
Mặt nón là mặt được tạo ra khi một đường thẳng di chuyển dọc theo một đường cong phẳng cho
trước. Các đường thẳng luôn đi qua một điểm cố định gọi là đỉnh của mặt nón
z
p0(u) trùng với gốc tọa độ O P1
P1(u) là đường tròn tâm (0,0,h) bán kính r.
P1(u)=(r.cos(u), r.sin(u), h) h
Ta có: p(u,v)= (1-v).P0(u)+v. P1(u)= v.P1(u)
Vậy p(u,v) = v.P1(u) P0 y
x
Hay: Với

73
Computer Graphics
V. Biểu diễn đường, mặt cong

Mặt nón

void DrawCone(float R, float h){


Point3D P; Point2D P1; double Delta_U,Delta_V,u,v;
Delta_U = 0.03; Delta_V = 0.1;
for (u=0; u<2*M_PI ;u+=Delta_U){
for (v=0; v<1; v+=Delta_V){
P.x = v*R*cos(u); P.y = v*R*sin(u);
P.z = v*h; P1 = Chieu(KieuChieu,P);
putpixel(xc+P1.x,yc+P1.y,WHITE);
}
}
}
74
Computer Graphics
V. Biểu diễn đường, mặt cong
3. Mặt có quy tắc (tt)
• Mặt tròn xoay Z

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:

Mặt xuyến toroid:

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])).

-Chiếu từng điểm P[i] lên mặt phẳng.

-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

-Nhập các hệ số của phương trình mặt:


a, b, c, d, Umin, Umax, Vmin, Vmax.

-Tính các hàm 2 biến: X(u,v), Y(u,v), Z(u,v).

-Khởi tạo phép chiếu: Song song/Phối cảnh.

-Vẽ họ đường cong u.

-Vẽ họ đường cong v.

80
Computer Graphics
Computer Graphics 81

You might also like