Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
3d 计算旋转的方法是什么?尤其是这个四面体的例子?_3d_Three.js - Fatal编程技术网

3d 计算旋转的方法是什么?尤其是这个四面体的例子?

3d 计算旋转的方法是什么?尤其是这个四面体的例子?,3d,three.js,3d,Three.js,我很难理解不规则物体的旋转,比如三角形和四面体。我试着旋转一个四面体,使两个角沿x轴笔直,它将平放在地面上。下面是我到目前为止所做的-关闭,它在地面上,但我如何向下移动左角(参见图中的箭头),使其与右角对齐 这就是使四面体变平的原因: tetrahedron.applyMatrix( new THREE.Matrix4().makeRotationAxis( new THREE.Vector3( 1, 0, -1 ).normalize(), Math.atan( Math.sqrt(2))

我很难理解不规则物体的旋转,比如三角形和四面体。我试着旋转一个四面体,使两个角沿x轴笔直,它将平放在地面上。下面是我到目前为止所做的-关闭,它在地面上,但我如何向下移动左角(参见图中的箭头),使其与右角对齐

这就是使四面体变平的原因:

tetrahedron.applyMatrix( new THREE.Matrix4().makeRotationAxis( new THREE.Vector3( 1, 0, -1 ).normalize(), Math.atan( Math.sqrt(2)) ) );

我花了一段时间才明白
Math.atan(Math.sqrt(2))
的温度是54.735610317245346度。我需要应用新的
makeRotationAxis
还是只需旋转它?一般来说,像这样计算旋转的方法是什么?

4×4变换矩阵是仿射变换,这意味着它不仅可以进行旋转,还可以进行平移、缩放和剪切。在所有可用的操作中,该语句只执行一次旋转。那么现在的问题是什么?“如何向下移动左角(请参见图中的箭头),使其与右角对齐?”“我需要应用新的makeRotationAxis还是只旋转它?一般来说,像这样计算旋转的方法是什么?”这个组合起作用了。
//将四面体放在地面上展平。applyMatrix(新的三个。Matrix4()。makeRotationAxis(新的三个。Vector3(1,0,-1)。normalize(),de2ra(54.735610317245346))//固定旋转四面体.applyMatrix(新的三个.Matrix4().makeRotationAxis(新的三个.Vector3(0,1,0).normalize(),de2ra(15))//固定偏移四面体。位置。设置(-141.4,0,-81.8)我知道它在做什么,但得到15度,x和z偏移是反复试验的。如何精确计算?