点变换和向量变换有什么区别?


11

这是我的讲师在课程中告诉我的:

我们仅考虑4 * 4矩阵。这些用于旋转,缩放或平移对象(或这些操作的任意组合)。稍后还将在虚拟相机模型的实现中使用矩阵。如果您不知道矢量变换和点变换之间的区别,请查找它。

我似乎无法仅为这个问题找到答案并为此网站注册了一个帐户。


1
在补充其他所有答案,因为其他人已经回答的长度这个问题在其他地方,您可以检查: scratchapixel.com/lessons/...
user18490

Answers:


9

这是简单的答案。

在4D中,为了能够将它们乘以4x4矩阵,向量表示为(x,y,z,0),点表示为(x,y,z,1)。

由于4x4矩阵的第4行代表矩阵的平移,因此上述表示使点受平移影响,而矢量不受此影响。

矢量和点都受旋转,缩放等影响。

警告:

如果您期望向量具有某些属性,则需要进行更深入的讨论。例如,如果您用与变换三角形顶点相同的矩阵来变换三角形的法线,则实际上它可能不再是该三角形的法线向量。这是因为法向向量与其从其计算的顶点具有某种反比关系。


法线不起作用,因为它们不是矢量。虽然不知道这个概念的介绍。
MB雷诺兹,

@MBReynolds在数学上,法线就像矢量一样是点或方向。这里的问题是我们应用于曲面点以对其进行变换的变换不适用于法线。
nbro

2
表面法线是双向量,不是向量。我们可以通过两个向量的叉积找到法线,结果是一个双向量。请参阅Per Vogensen的信息:gist.github.com/pervognsen/c6b1d19754c2e8a38b10886b63d7bf2d
MB雷诺兹,

4

从我所学到的,因为我也是一个学生,所以你想使用矩阵,以便以相同的方式处理旋转,缩放和平移,即乘以一个矩阵(即,一个 ×矩阵)。4 × 44×44×4

请记住,如果没有这 x矩阵,则平移将通过与矢量求和来表示,而旋转和缩放则分别使用与矢量和标量因数的乘法来表示。4×4

现在的问题是:我们如何从3D坐标系传递到4D坐标系?答案是“ 同质坐标 ”。

那么,这是什么意思呢?我们构造矩阵来表示旋转,缩放和平移,因此我们仅使用矩阵乘法来表示变换(例如,旋转,缩放等)。我们是如何单独构建它们的,更具体些,但是您可以在网络上查看它。4×4

在这一点上,我们有矩阵和3D向量,这还没有用,因为您不能将矩阵和向量相乘,因为尺寸不匹配。这就是为什么当我们使用原始坐标时,我们还需要将给定的3D点转换为相应的4D点。4×43 d4×43d

我们该怎么做呢?

我们区分方向位置向量。顾名思义,方向向量具有指向的方向。我们也关心它们的长度,但是它们不受翻译的影响,因为我们不在乎它们的位置。位置向量(或简称为“点”)可以平移或移动。它们通常相对于原点表示,即作为从原点到点本身的向量。

我们通过添加作为对应的齐次矢量的第个坐标来变换3D方向矢量:我们添加一个0,因为这基本上消除了平移的影响。我们对位置矢量进行了类似的操作,但是由于相反的原因,我们添加了而不是。4 0 10401个

例如,如果我们有一个方向矢量,则可以通过执行。同样,如果我们有一个点矢量我们会将其转换为v = v 1 v 2 v 3 v ' = v 1 v 2 v 3 0 u = u 1 u 2 u 3 u ' = u 1 u 2 u 3 13dv=v1个v2v3v=v1个v2v30ü=ü1个ü2ü3ü=ü1个ü2ü31个

注意:要从齐次坐标转换回对应的坐标,您不能简单地删除第坐标,除非它仍然等于(或分别为)。4 ħ 1 03d4ŤH1个0


如果您注意到在任何实际齐次坐标中,也是点的有效表示,则此答案将更为完整。从普通3D坐标转换为4D投影坐标时,选择很方便,但是在逆转换中允许其他值也使我们能够使用4D矩阵乘法表示透视变换w 0 x y z w = 1 wwXwÿwžww0Xÿžw=1个w
Ilmari Karonen

2

如果您要查找向量和点的定义,则向量为:

量,例如速度,完全由大小和方向指定。 http://www.thefreedictionary.com/vector

重点是:

一个无量纲的几何对象,除了位置外没有其他属性。 http://www.thefreedictionary.com/point

因此,您可以说向量是带比例的方向,而点是位置。

因此,如果变换向量,则只需旋转和缩放即可。使用点也可以平移它(点的旋转和缩放围绕原点进行,因为它只是点本身无法旋转的位置)。

大多数情况下,矢量和点被放置在同一容器中,该容器具有4个分量。唯一的区别是w分量。如果w分量为0,则为方向。如果为1,则向量为点。

可以在矩阵本身中找到原因。它利用将4个分量与4x4矩阵相乘的向量相乘的方式。如果您不知道它是如何工作的,我建议您快速浏览一下。

大多数情况下,您使用4x4矩阵。正常的转换矩阵可能看起来像这样: (旋转和比例尺放在您可以说的3x3区域中,因此,仅用于旋转和缩放,也可以使用3x3矩阵,但是当进行平移时,我们需要第4列。)

[[RØŤ+sC一种Ë[RØŤ+sC一种Ë[RØŤ+sC一种ËŤ[R一种ñs一种Ť一世Øñ[RØŤ+sC一种Ë[RØŤ+sC一种Ë[RØŤ+sC一种ËŤ[R一种ñs一种Ť一世Øñ[RØŤ+sC一种Ë[RØŤ+sC一种Ë[RØŤ+sC一种ËŤ[R一种ñs一种Ť一世Øñ0001个]

如您所见,如果最后一个分量为0,则您将与0相乘,因此结果为0,并且没有转换。

这使得在带有多边形对象的计算机图形中变得容易。您可以使用相同的变换矩阵来变换位置,但也可以变换法线。因为法线的w分量设置为0,而位置的w分量为1,所以法线只是旋转(并缩放),这会导致一些奇怪的事情,因此在大多数情况下,法线在之后进行归一化。实际上,由于奇怪的东西,实际上建议使用相同的矩阵进行位置和旋转!请看@JarkkoL的注释。)然后转换位置(并围绕原点旋转和缩放比例)。

希望我没有记错:P,这对您有所帮助!


2
法线不使用与位置相同的变换矩阵进行变换。您需要计算3x3子矩阵的转置的逆,以正确变换法线以进行不均匀缩放和/或倾斜的变换。
JarkkoL '16

@JarkkoL是的,这是正确的。最好不要使用相同的矩阵,但是要根据实现情况来完成。大多数时候,人们不太关心法线的倾斜,因为他们要么根本不使用非均匀缩放,要么根本不使用缩放。关于变换位置和法线的那部分更多的是使用一个容器可能有用。
bram0101 '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.