2012-05-30 15 views
12

Hãy A được ma trận điểm 4x4 MATLAB, thu được từ chức năng xem bằng cách:Matlab 3D xem ma trận

A = view; 

A(1:3,1:3) phải tương ứng với luân chuyển và mở rộng quy mô,
A(1:3,4) phải tương ứng với dịch thuật và
A(4,:) nên chỉ đơn giản là [0 0 0 1].

Khi cài đặt các thông số máy ảnh để kịch bản đơn giản sau đây:

Tôi nhận được rằng A = view là:

-1 0 0 0.5 
0 1 0 -0.5 
0 0 1 -0.5 
0 0 0 1 

Bây giờ tôi không thể tìm chúng tôi, nơi 0,5 của đến từ . Lưu ý rằng tôi đặt vị trí máy ảnh thành [0,0,0] vì vậy không nên dịch.

tính đặc thù khác, thiết lập các vị trí camera tới [0,0,10] bởi:

set(gca, 'CameraPosition', [0,0,10]) 

kết quả trong A: = xem ma trận trở

1 0 0 -0.5 
0 1 0 -0.5 
0 0 -1 5.5 
0 0 0 1 

Vì vậy, tôi đã nhận thấy sự -0,5 đã thay đổi thành 5,5 trong A(3,4) và điều này bằng cách nào đó phải làm với 5 = 10/2.
Tức là, thay đổi vị trí của máy ảnh thành [0,0, a] thay đổi ma trận xem tại A(3,4) khoảng a/2.

Đây là ... lạ? Riêng? Odd?

Cập nhật: Tuy nhiên, một phân tử khác là yếu tố quyết định A (1: 3,1: 3) là -1 mặc dù đối với ma trận xoay, nên 1. Khi đó -1 nghĩa là không chỉ xoay vòng cũng phản ánh. Tại sao chúng ta cần sự phản chiếu?

+0

Tôi cũng nhận được kết quả tương tự, thật kỳ lạ ... Vì giá trị của nó, hãy xem [thread] này (http://www.mathworks.com/matlabcentral/answers/15887-how-to-render-an-accurate-image-of-a-3d-model) đề cập đến một số thuộc tính trục không có giấy tờ liên quan đến chế độ xem 3D và 2D sự chiếu – Amro

Trả lời

0

Đoán được giáo dục của tôi là MATLAB cho phép bạn đặt nó như thể tọa độ pixel nằm trong phạm vi (-0.5 * kích thước khung nhìn, 0,5 * kích thước khung nhìn), nhưng sử dụng nội bộ hệ tọa độ pixel phổ biến hơn trong đó tọa độ của mỗi pixel nằm trong khoảng (0, kích thước khung nhìn).

0

Không quen thuộc với MATLAB, nhưng: Trong đồ họa 3D, bạn luôn phân biệt giữa ma trận chiếu và máy ảnh.

Phép chiếu đi từ "không gian máy ảnh" trong đó máy ảnh ở vị trí 0 để chiếu không gian. Sau ma trận projective được áp dụng tọa độ màn hình được tính như x '= x/w vv Vì vậy, theo quan điểm tất cả các ma trận projective làm là để di chuyển z vào w. Trong orthographic có thể thêm z đến x thay vào đó.

Nhưng nó cũng thường bao gồm các biến đổi cửa sổ. Trong không gian máy ảnh, máy ảnh ở 0 và nhìn xuống z, vì vậy tọa độ có nhiều hơn -1..1. Nhưng tọa độ cửa sổ là 0..1, do đó thường là * .5, +.5 hoặc phủ định, v.v.

Điều kỳ lạ bạn thấy là trộn máy ảnh và chiếu. Tôi chắc chắn MATLAB có cả hai. Sử dụng ma trận máy ảnh để di chuyển và xoay máy ảnh. Chỉ sử dụng phép chiếu cho các tọa độ cửa sổ và hiệu ứng phối cảnh.

1

Hãy thử tương tự trong Matlab 2013a .. bạn sẽ tìm thấy kết quả phù hợp với kỳ vọng ...Tôi không biết bạn đang sử dụng phiên bản Matlab nào .. nhưng chắc chắn nó đã được sửa trong phiên bản 8.1