将本地坐标转换为世界坐标的公式
Formula to convert Local coordinates to world coordinates
谁能给我公式?
我有一个 vector3d 表示顶点在局部坐标中的位置,我有一个 Matrix3d 表示对象的旋转和位置,这个顶点是它的几何体的一部分,我如何将这个顶点的局部位置转换为坐标世界的?
现在可以用了,我在保留原始 vertex3d 时遇到了问题,我玩了顺序,这很有效,非常感谢,这是代码,我确实必须使用 m2.invert ();这是代码:
var m3d:Matrix3D = new Matrix3D();
obj.Transform.copyToMatrix3D(m3d);
var m2:Matrix3D = new Matrix3D();
m2.append(m3d);
m2.invert();
m2.prependTranslation(obj.BoundingBox[i].x,obj.BoundingBox[i].y,obj.BoundingBox[i].z);
obj.BoundingBox[i] = new Vector3D(m2.position.x,m2.position.y,m2.position.z);
其实我当初做的也OK:
var m3d:Matrix3D = new Matrix3D();
obj.Transform.copyToMatrix3D(m3d);
m3d.invert();
obj.BoundingBox[i] = m3d.transformVector(obj.BoundingBox[i]);
我唯一缺少的是 invert();我希望我知道它的用途是什么......
有人告诉我我必须附加(或前置)对象矩阵,然后是世界矩阵,这是有道理的,但添加世界矩阵只会给我带来问题,而 invert();做得很好,但为什么呢?
Vesper,是你推荐的,谢谢,但是为什么呢?
我知道为什么,有经验的人给了我答案:相机显示的一切都是镜像的,当你向左时,世界似乎在向右移动,所以你需要反转。
谁能给我公式? 我有一个 vector3d 表示顶点在局部坐标中的位置,我有一个 Matrix3d 表示对象的旋转和位置,这个顶点是它的几何体的一部分,我如何将这个顶点的局部位置转换为坐标世界的?
现在可以用了,我在保留原始 vertex3d 时遇到了问题,我玩了顺序,这很有效,非常感谢,这是代码,我确实必须使用 m2.invert ();这是代码:
var m3d:Matrix3D = new Matrix3D();
obj.Transform.copyToMatrix3D(m3d);
var m2:Matrix3D = new Matrix3D();
m2.append(m3d);
m2.invert();
m2.prependTranslation(obj.BoundingBox[i].x,obj.BoundingBox[i].y,obj.BoundingBox[i].z);
obj.BoundingBox[i] = new Vector3D(m2.position.x,m2.position.y,m2.position.z);
其实我当初做的也OK:
var m3d:Matrix3D = new Matrix3D();
obj.Transform.copyToMatrix3D(m3d);
m3d.invert();
obj.BoundingBox[i] = m3d.transformVector(obj.BoundingBox[i]);
我唯一缺少的是 invert();我希望我知道它的用途是什么...... 有人告诉我我必须附加(或前置)对象矩阵,然后是世界矩阵,这是有道理的,但添加世界矩阵只会给我带来问题,而 invert();做得很好,但为什么呢?
Vesper,是你推荐的,谢谢,但是为什么呢?
我知道为什么,有经验的人给了我答案:相机显示的一切都是镜像的,当你向左时,世界似乎在向右移动,所以你需要反转。