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
Javascript 如何使用three.js计算旋转度和旋转方向向量后的点?_Javascript_Three.js_Rotation - Fatal编程技术网

Javascript 如何使用three.js计算旋转度和旋转方向向量后的点?

Javascript 如何使用three.js计算旋转度和旋转方向向量后的点?,javascript,three.js,rotation,Javascript,Three.js,Rotation,如何使用three.js计算旋转角度和旋转方向向量(-42,51,11)后的点A到H 提前谢谢你,请原谅我的英语不好。致以最良好的祝愿 const tree = [ [ 0, 0, 0], // A [ 2, 151, 2], // B [ -62, 283, 63], // C [ 62, 296, -58], // D [-104, 334, 74], // E [ -58, 338, 45], //

如何使用three.js计算旋转角度和旋转方向向量(-42,51,11)后的点A到H

提前谢谢你,请原谅我的英语不好。致以最良好的祝愿

const tree = [
    [   0,   0,   0],  // A
    [   2, 151,   2],  // B
    [ -62, 283,  63],  // C
    [  62, 296, -58],  // D 
    [-104, 334,  74],  // E
    [ -58, 338,  45],  // F
    [  67, 403, -55],  // G
    [ 105, 365, -86],  // H
  ] 

此代码将围绕定义为顶点的轴对树中的所有向量应用90度旋转
[-42、51、11]
。因此,旋转轴被定义为从
[0,0,0]
[-42,51,11]
的直线,因此点
a
在旋转中不会改变

const树=[
[0,0,0],//A
[2151,2],//B
[6228363],//C
[62296,-58],//D
[-104334,74],//E
[-5833845],//F
[67403,-55],//G
[105365,-86],//H
] 
//定义旋转轴:
设轴=新的三个矢量3(-42,51,11)
//规范化轴:
axis.normalize()
//定义矩阵:
让矩阵=新的三个。矩阵4()
//以弧度定义旋转:
设弧度=90*Math.PI/180
//旋转矩阵:
矩阵旋转轴(轴、弧度)
//现在将旋转应用于树中的所有向量
让newTree=[]
for(树的常量向量){
//定义向量3:
设vec=new-THREE.Vector3(向量[0],向量[1],向量[2])
向量应用矩阵X4(矩阵)
newTree.push(vec.toArray())//toArray是可选的,您可能希望保留原始的Vector3对象
}
//newTree现在保存旋转的向量
console.log(newTree)

有关工作版本,请参见。

您需要定义旋转矩阵,然后将该矩阵应用于每个顶点。查看Three.js的源代码,以获取有关如何执行此操作的示例。例如,请查看此处的矩阵定义和顶点旋转,您甚至可以直接使用Three.js来帮助您解决问题。@Maarten Veerman衷心感谢您的回答。您能提供更多详细信息吗?@Maartenvermanthan非常感谢您的回答。我很容易理解。