Tôi muốn làm một số bản vẽ 2D và do đó muốn thực hiện một số phép biến đổi ma trận. Với nền toán học ánh sáng của tôi, tôi đang cố gắng để hiểu làm thế nào để làm như vậy trong C# (bất kỳ ngôn ngữ oop nào khác sẽ làm điều đó rõ ràng).Tại sao các phép biến đổi 2D cần ma trận 3x3?
Tất cả những gì tôi đọc giải thích rằng chúng tôi cần làm việc với các ma trận 3x3 để có thể đối phó với các bản dịch. Bởi vì bạn không thể tạo bản dịch với phép nhân. Nhưng điều này là với phép nhân của các ma trận mà chúng ta tạo ra các phép biến đổi của chúng ta. Vì vậy, chúng tôi làm việc với một cái gì đó như:
{ x1, x2, tx }
{ y1, y2, ty }
{ 0, 0, 1 }
Tôi hiểu ý nghĩa của cột thứ ba, nhưng tại sao chúng ta cần hàng thứ ba? Trong một ma trận nhận dạng cũng như trong một vòng quay, quy mô hoặc xoay hàng cuối cùng là như nhau. Có những hoạt động mà tôi chưa đạt được mà sẽ cần đến nó? Có phải vì một số ngôn ngữ (Java) hoạt động tốt hơn với các mảng "kích thước bình phương" không? Nếu vậy tôi có thể sử dụng 3 cột và 2 hàng trong C# (kể từ khi mảng lởm chởm hoạt động tốt hoặc tốt hơn).
Ví dụ, đối với một dịch xoay + Tôi có một ma trận như thế này
{ cos(rot)*x1, (-sin(rot))*x2, tx }
{ sin(rot)*y1, cos(rot)*y2, ty }
{ 0, 0, 1 }
Không cần của hàng cuối cùng.
Bắt đầu đọc của bạn tại http://en.wikipedia.org/wiki/Translation_(geometry), sau đó theo một trong các liên kết đến http://en.wikipedia.org/wiki/Homogeneous_coordinates –
@HighPerformanceMark Tôi ở đây cố gắng giải thích điểm nào của những khái niệm này mà tôi không hiểu. Có, đây là 2 tài liệu đầu tiên tôi bắt đầu đọc. –