Sự khác biệt giữa biến đổi điểm và biến đổi vectơ là gì?


11

Đây là những gì giảng viên của tôi nói với tôi trong các khóa học:

Chúng tôi chỉ xem xét ma trận 4 * 4. Chúng được sử dụng để xoay, chia tỷ lệ hoặc dịch các đối tượng (hoặc bất kỳ sự kết hợp nào của các hoạt động này). Ma trận cũng được sử dụng sau này trong việc thực hiện mô hình camera ảo. Nếu bạn không biết sự khác biệt giữa phép biến đổi vectơ và phép biến đổi điểm, hãy tìm nó.

Tôi dường như không thể tìm thấy câu trả lời và tạo một tài khoản cho trang web này chỉ cho câu hỏi này.


1
Để bổ sung cho tất cả các câu trả lời khác và bởi vì những người khác đã trả lời câu hỏi này từ lâu ở nơi khác, bạn có thể kiểm tra: scratchapixel.com/lessons/iêu
user18490

Câu trả lời:


9

Đây là câu trả lời đơn giản.

Trong 4D, để có thể nhân chúng với ma trận 4 x 4, vectơ được biểu diễn dưới dạng (x, y, z, 0) và các điểm được biểu diễn dưới dạng (x, y, z, 1).

Do hàng thứ 4 của ma trận 4x4 đại diện cho bản dịch của ma trận, các biểu diễn trên làm cho nó để các điểm bị ảnh hưởng bởi bản dịch, nhưng các vectơ thì không.

Cả vectơ và điểm đều bị ảnh hưởng bởi phép quay, tỷ lệ, v.v.

Hãy cẩn thận:

Sẽ có thảo luận sâu hơn nếu bạn mong đợi các vectơ có các thuộc tính nhất định. Chẳng hạn, nếu bạn biến đổi một tam giác bình thường theo cùng một ma trận bạn biến đổi các đỉnh của tam giác, thì nó thực sự sẽ không còn là vectơ bình thường của tam giác đó nữa. Điều này là do các vectơ bình thường có một mối quan hệ nghịch đảo với các đỉnh mà chúng được tính toán từ đó.


Định mức không hoạt động vì chúng không phải là vectơ. Mặc dù vậy, không biết về một giới thiệu tốt cho khái niệm này.
MB Reynold

@MBReynold Theo nghĩa toán học, quy tắc là vectơ dưới dạng điểm hoặc hướng. Vấn đề ở đây là các phép biến đổi mà chúng ta áp dụng cho các điểm của một bề mặt để biến đổi chúng không áp dụng cho các quy tắc.
nbro

2
bình thường bề mặt là bivector, không phải vectơ. Chúng ta có thể tìm thấy một bình thường bởi sản phẩm chéo của hai vectơ, kết quả là một bivector. XEM Per Vogensen's: gist.github.com/pervognsen/c6b1d19754c2e8a38b10886b63d7bf2d
MB Reynold

4

4×44×4 ma trận).

Hãy nhớ rằng không có những ma trận, bản dịch sẽ được đại diện bằng cách tổng hợp với một vector, trong khi quay và mở rộng quy mô được thể hiện bằng phép nhân với tương ứng một vector và một yếu tố vô hướng.4×4

Bây giờ câu hỏi là: làm thế nào để chúng ta chuyển từ hệ tọa độ 3D sang hệ thống 4D ? Câu trả lời là " tọa độ đồng nhất ".

Vì vậy, nó có nghĩa gì? Chúng tôi xây dựng 4×4 ma trận đại diện cho phép quay, mở rộng quy mô và dịch, do đó chúng tôi chỉ sử dụng phép nhân ma trận đại diện cho biến đổi (ví dụ, phép quay, mở rộng quy mô, vv). Cách chúng tôi xây dựng chúng riêng lẻ, cụ thể hơn, nhưng bạn có thể xem trên web.

Tại thời điểm này, chúng tôi có ma trận và vectơ 3D, không hữu ích nào, bởi vì bạn không thể nhân 4 × 4 ma trận và 3 D4×44×43D vectơ, vì kích thước không phù hợp. Đó là lý do tại sao, khi chúng tôi làm việc với các tọa độ gia đình, chúng tôi cũng cần chuyển đổi các điểm 3D đã cho thành các điểm 4D tương ứng.

Chúng ta làm điều đó như thế nào?

Chúng tôi phân biệt giữa các vectơ hướngvị trí . Các vectơ chỉ hướng, như tên cho thấy, có hướng mà chúng đang chỉ; chúng tôi cũng quan tâm đến độ dài của chúng, nhưng chúng không bị ảnh hưởng bởi các bản dịch, vì chúng tôi không quan tâm đến vị trí của chúng. Các vectơ vị trí (hoặc đơn giản là "điểm") có thể được dịch hoặc di chuyển xung quanh; chúng thường được biểu diễn liên quan đến điểm gốc, tức là dưới dạng vectơ từ điểm gốc đến điểm chính.

0401

3Dv=(v1v2v3)v=(v1v2v30)u=(u1u2u3)u=(u1u2u31)

3D4th10


(wx,wy,wz,w) bất cứ gì w0 cũng là một đại diện hợp lệ của điểm (x,y,z). Khi chuyển đổi từ tọa độ 3D thông thường sang tọa độ chiếu 4D, thật thuận tiện để chọnw= =1, nhưng cho phép các giá trị khác của wtrong chuyển đổi nghịch đảo, chúng ta cũng biểu diễn các phép biến đổi phối cảnh bằng cách nhân ma trận 4D.
Ilmari Karonen

2

Nếu bạn tìm kiếm định nghĩa của một vectơ và một điểm, thì một vectơ là:

A quantity, such as velocity, completely specified by a magnitude and a direction. http://www.thefreedictionary.com/vector

And a point is:

A dimensionless geometric object having no properties except location. http://www.thefreedictionary.com/point

So you could say that a vector is a direction with scale, and a point is a location.

So, if you transform a vector you just rotate and scale it. With a point you also translate it (the rotation and scaling of a point is around the origin, since it iss just a location the point itself cannot be rotated).

Most of the times a vector and a point are put into the same container, a vector with 4 components. The only difference is the w component. If the w component is 0, then it is a direction. If it is 1 then the vector is a point.

The reason for this can be found in the matrix itself. It makes use of the way you multiply a vector with 4 components with a 4x4 matrix. If you do not know how that works, I would suggest a quick google.

Most of the times you use a 4x4 matrix. A normal transformation matrix could look like this:

[rot+scalerot+scalerot+scaletranslationrot+scalerot+scalerot+scaletranslationrot+scalerot+scalerot+scaletranslation0001]
(The rotation and scale are put in the 3x3 area you could say, so for just rotation and scale a 3x3 matrix could also be used, but when translation comes in, we need that 4th column.)

As you can see, if the last component is 0, then you have a multiplication with 0 and therefore the result is 0 and there is no translation.

This makes it easy in computer graphics with polygonal objects. You have the same transformation matrix to transform the positions but also the normals. Because the normals have their w component set to 0 and the positions' w component is 1, the normals are just rotated (and also scaled which can lead to some weird stuff, so most of the times the normal is normalized after. It isn't actually recommended to use the same matrix for positions and rotations because of the weird stuff! Look at @JarkkoL 's comment.) and the positions are translated (and rotated and scaled around the origin).

Hope I did not make a mistake :P, and this helped you!


2
Normals are not transformed with the same transformation matrix as positions. You need to calculate inverse of the transpose of the 3x3 sub-matrix to properly transform normals for transformations with non-uniform scaling and/or skewing.
JarkkoL

@JarkkoL yeah that is true, you are right with that. It is best to not use the same matrix, but depending on the implementation, it is done. Most of the times people do not care about the skewing of the normals that much, because they either do not use non-uniform scaling or scaling at all. That part about transforming positions and normals was more about that it could be useful to use one container.
bram0101
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.