【发布时间】:2015-12-08 17:39:41
【问题描述】:
我正在尝试对一些 3D 点进行透视变换。 (如果有帮助,我正在尝试应用here 描述的算法)。但基本上,我有一个具有以下值的 Matrix3D:
HasInverse = true
IsAffine = false
IsIdentity = false
M11 = 1.000000000000000
M12 = 0.0
M13 = 0.0
M14 = 0.0
M21 = 0.0
M22 = 1.000000000000000
M23 = 0.0
M24 = 0.0
M31 = 0.0
M32 = 0.0
M33 = -1.0101010101010102
M34 = 0.0
M44 = 0.0
OffsetX = 100
OffsetY = -1.0101010101010102
OffsetZ = 0.0
当我使用此矩阵将 Transform 应用到 310,120,0 的点时。 . .
Point3D p = new Point3D(310, 120, 0);
Point3D pointResult = new Point3D();
pointResult = (Point3D)TheMatrix.Transform(p);
...我在结果中得到 (Infinity, Infinity, -Infinity)。 transform() 方法究竟做了什么?为什么我会得到这个结果? MSDN 只是说这种方法。 . .
通过 Matrix3D 转换指定的 Point3D 并返回 结果。
【问题讨论】: