Trong hầu hết đồ họa 3D, điểm được biểu diễn bằng vector 4 thành phần sự kết hợp này.
Các phép biến đổi này có thể được biểu diễn bằng đối tượng toán học được gọi là "ma trận". Một ma trận áp dụng trên một vector như thế này:
[ a b c tx ] [ x ] [ a*x + b*y + c*z + tx*w ]
| d e f ty | | y | = | d*x + e*y + f*z + ty*w |
| g h i tz | | z | | g*x + h*y + i*z + tz*w |
[ p q r s ] [ w ] [ p*x + q*y + r*z + s*w ]
Ví dụ, tỉ lệ được biểu diễn dưới dạng
[ 2 . . . ] [ x ] [ 2x ]
| . 2 . . | | y | = | 2y |
| . . 2 . | | z | | 2z |
[ . . . 1 ] [ 1 ] [ 1 ]
và dịch như
[ 1 . . dx ] [ x ] [ x + dx ]
| . 1 . dy | | y | = | y + dy |
| . . 1 dz | | z | | z + dz |
[ . . . 1 ] [ 1 ] [ 1 ]
Một trong những lý do cho thành phần thứ 4 là tạo một bản dịch có thể biểu diễn bằng ma trận.
Lợi thế của việc sử dụng ma trận là nhiều phép biến đổi có thể được kết hợp thành một thông qua phép nhân ma trận.
Bây giờ, nếu mục đích đơn giản là mang bản dịch trên bàn, thì tôi muốn nói (x, y, z, 1) thay vì (x, y, z, w) và tạo hàng cuối cùng của ma trận luôn luôn [0 0 0 1]
, như thường được thực hiện cho đồ họa 2D. Trong thực tế, vector 4 thành phần sẽ được ánh xạ trở lại vectơ 3-vector thông thường theo công thức này:
[ x(3D) ] [ x/w ]
| y(3D) ] = | y/w |
[ z(3D) ] [ z/w ]
Đây được gọi là homogeneous coordinates. Cho phép điều này làm cho phép chiếu phối cảnh có thể hiển thị bằng ma trận quá, có thể kết hợp lại với tất cả các phép biến đổi khác.
Ví dụ, kể từ khi đối tượng xa nên nhỏ hơn trên màn hình, chúng ta chuyển đổi 3D phối vào 2D sử dụng công thức
x(2D) = x(3D)/(10 * z(3D))
y(2D) = y(3D)/(10 * z(3D))
Bây giờ nếu chúng ta áp dụng ma trận chiếu
[ 1 . . . ] [ x ] [ x ]
| . 1 . . | | y | = | y |
| . . 1 . | | z | | z |
[ . . 10 . ] [ 1 ] [ 10*z ]
sau đó thực Tọa độ 3D sẽ trở thành
x(3D) := x/w = x/10z
y(3D) := y/w = y/10z
z(3D) := z/w = 0.1
vì vậy chúng tôi chỉ cần cắt x -coordinate ra để dự án 2D.
Xem sách "Toán học thiết yếu cho trò chơi và ứng dụng tương tác". –
Vectơ chuẩn hóa không phải là "không có cường độ". Các vectơ chuẩn hóa có độ dài/độ lớn 1. – alesplin
Cảm ơn! Tôi đoán tôi đã mang đi trong sự hiểu biết. Ít nhất tôi đã đi đúng hướng. ;) –