Xác định đường khuất mặt khuất Để có thể tạo ra ảnh nổi trong không gian 3 chiều người ta phải bỏ đi các mặt khuất đường khuất hoặc dựa vào màu sắc để tạo nên độ sáng tối khác nhau, điề
Trang 1Mặt Các đỉnh
1 1 2 3 4
2 5 6 7 8
3 1 2 6 5
4 2 3 7 6
5 3 4 8 7
6 4 1 5 8
Vẽ hình lập phương theo mô hình trên
Bài tập : Biểu diễn các khối đa diện đều và viết chương trình minh hoạ :
1 Tứ diện đều
2 Khối lập phương
3 Bát diện đều (8 mặt, mỗi mặt là một tam giác đều, 1 đỉnh kề 4 mặt)
4 Nhị thập diện đều (20 mặt, mỗi mặt là một tam giác đều, 1 đỉnh kề 5 mặt)
5 Thập nhị diện đều (12 mặt, mỗi mặt là một ngũ giác đều, 1 đỉnh kề 3 mặt)
6 Biểu diễn hình lăng trụ và viết chương trình minh hoạ
$14 Xác định đường khuất mặt khuất
Để có thể tạo ra ảnh nổi trong không gian 3 chiều người ta phải bỏ đi các mặt khuất
đường khuất hoặc dựa vào màu sắc để tạo nên độ sáng tối khác nhau, điều này dẫn
đến bài toán xác định mặt khuất đường khuất trong kỹ thuật đồ hoạ
Trang 2ax+by+cz+d=0 (*) Mặt phẳng (*) chia không gian thành hai phần Chúng ta quy ước tất cả các điểm (x,y,z) mà ax+by+cz+d <0 là phía sau của mặt và tập các điểm (x,y,z) mà
ax+by+cz+d ≥0 là phần phía trước của mặt
Với các quy định trên thì vật thể là tập hợp tất cả các điểm thuộc phần phía sau của tất cả các mặt tạo nên vật thể
Từ đây ta cũng suy ra những điểm nằm về phía sau của tất cả các mặt tạo nên phần bên trong vật thể, phần còn lại của không gian là phần bên ngoài vật thể, suy ra người quan sát có thể nhìn thấy vật thể khi người đó ở phía ngoài vật thể
Giả sử vật thể 3D được cho bởi danh sách các mặt và mỗi mặt là danh sách các cạnh hoặc các đỉnh Mỗi mặt là một đa giác lồi Ta giả sử các cạnh được đánh số theo chiều ngược chiều kim đồng hồ
Gọi ρ
n là véctơ pháp tuyến của mặt ABCD ngược với hướng nhìn từ bên ngoài
Giả sử người quan sát ở vị trí E x( E,yE,zE) nhìn vào vật thể Lấy một điểm P bất
kỳ trên mặt Si của vật thể khi đó vectơ epρ
tạo nên hướng nhìn của người quan sát
đối với mặt Si
E
b
n a B A
Trang 3E
P
n
a b
Xét tích các hướng ep nρ ρ ep nρ n epρ ρ
= cos( , ) khi đó nếu ep nρ ρ
<0 ⇒ góc ( ,ρ ρ)
n ep < 90O thì mặt Si chứa điểm P bị che khuất khi đó các cạnh tạo nên mặt bị che khuất không nhìn thấy, nó tạo nên các đường khuất Ngược lại nếu
( ,ρ ρ)
n ep ≥ 90O thì người quan sát nhìn thấy mặt Si và do đó các cạnh tạo nên mặt Si không bị che khuất
Chú ý:
1 Chúng ta chú ý rằng nếu mặt phẳng song song với hướng nhìn thì hình ảnh của mặt trên mặt phẳng chiếu là một đoạn thẳng
2 Việc xác định các đường khuất mặt khuất dựa theo nguyên tắc trên đối với các vật
α P
E
O n
B
Trang 42 Thuật toán mô tả vật thể theo độ sâu
(Depth buffer Method)
Bây giờ chúng ta khảo sát một thuật toán khác - gọi là thuật toán mô tả vật thể theo
độ sâu, ý tưởng của thuật toán rất đơn giản là dựa vào khoảng cách giữa mỗi điểm trên vật thể với vị trí người quan sát để tô màu sáng tối khác nhau
Ưu điểm của phương pháp này là vật thể có thể có hình dạng bất kỳ không nhất thiết
là đa diện, dễ ứng dụng, dễ hiểu
Bài toán như sau :
Giả sử cho vật thể V được giới hạn bởi các mặt S1,S2 Sm, các điểm (i,j) thuộc mặt Sk của vật thể được tô bởi màu f(k,i,j) (k=1,m) (để đơn giản ta có thể giả thiết các điểm của mỗi mặt Sk được tô cùng một màu fk) Giả sử người quan sát ở vị trí
E x y ( E, E, zE) và nhìn vật thể theo hướng OZ
S1 S2
Z Y
O
X
Thuật toán mô tả vật thể theo độ sâu được thể hiện như sau:
Ta sử dụng hai mảng : một mảng gọi là mảng depth(i,j) dùng để chứa độ sâu theo
Trang 5depth(i,j):=0; color(i,j):=<màu nền>
2 For (mỗi điểm (i,j) thuộc hình chữ nhật bao vật thể) Do
Begin
For k:=1 To m Do
Begin
If (điểm (i,j) thuộc mặt Sk) Then
Begin
Tính độ sâu của điểm (i,j) thuộc Sk : z:=(-aki-bkj-dk)/ck
If (z<depth(i,j)) Then
Begin
depth(i,j):=z; color(i,j):=f(k,i,j);
End;
End;
End;
End;
3 Với mỗi điểm (i,j) thuộc hình chữ nhật bao vật thể
vẽ điểm (i,j) bằng màu color(i,j);
4 Kết thúc
Ưu điểm của thuật toán này như trên đã nêu đơn giản, dễ áp dụng cho mọi đối
tượng Nhiều lúc nó còn có ưu điểm lớn hơn là với vật thể phức tạp, số mặt tăng lên
số phép tính không tăng Nhược điểm lớn nhất là kích thước của 2 mảng tăng nhanh khi độ phân giải của màn hình tăng
Chú ý: Nếu các mặt của vật thể là các đa giác nghĩa là một phần của mặt phẳng: ax+by+cz+d=0
khi đó việc tính độ sâu z được tính theo công thức:
c
k
3 Thuật toán xác định vật thể theo đường quét
Phương pháp nμy còn có tên gọi lμ thuật toán scan-line
ý tưởng của thuật toán như sau:
Trang 6Giả sử cho vật thể V trong không gian 3D Người quan sát ở vị trí E nhìn vật thể V theo hướng OZ khi đó ta thực hiện các bước sau:
1 Chiếu vật thể V theo hướng OZ lên mặt phẳng chiếu XOY Giả sử S1,S2 Sm tương ứng là hình chiếu của các mặt V1,V2 Vm của vật thể V
2 Giả sử hình chiếu của vật thể được bao bởi hình chữ nhật
(xmin , xmax) x (ymin , ymax) For i:= ymin To ymax Do
Begin
Kẻ đường thẳng y= i (song song với OX)
Gọi x1<= x2 <= <= xm là hoànhđộ của các giao điểm
của tia quét với biên của các mặt hình chiếu
For j:=1 To m-1 Do
Begin
xét đoạn thẳng xjxj+1
If (xjxj+1 chỉ thuộc 1 mặt) Then (tô màu xjxj+1 theo mặt đó)
Else
Begin
Tại mỗi điểm trên đoạn xác định độ sâu của điểm
theo từng mặt để chọn được mặt gần nhất và tô màu của điểm theo mặt đó
End;
End;