有了两个三维空间基,我需要找到变换矩阵,这样我就可以在两个坐标系之间转换点。我使用Three js Vector3作为空格的基础。
Space A basis:
X - THREE.Vector3 {x: 0, y: -2.4797891148376707, z: 0.054067921976497235}
Y - THREE.Vector3 {x: 0.0625, y: 0.041246288882594406, z: 1.8917334800284853}
Z - THREE.Vector3 {x: -5.101850904697792, y: 0.003673384160379493, z: 0.16847731006724959}
Space B basis:
X - THREE.Vector3 {x: 0, y: 29.828016820959952, z: -0.23079947575435433}
Y - THREE.Vector3 {x: 0.75, y: 0.1846261135594407, z: 23.86067300560442}
Z - THREE.Vector3 {x: -61.400324372163844, y: 0.014932539676718379, z: 1.9298485977969317}
找不到任何方法来获得这种情况下的变换矩阵。如果能找到一种基于两个空格的编程计算方法,那就太好了。
使用Matrix4.makeBasis()设置两个矩阵。该方法接受三个向量来定义4x4矩阵的基。如果您现在需要一个从基a映射到基B的矩阵,请这样做:
const m = new THREE.Matrix4();
m.multiplyMatrices( b, a.transpose() );