Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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
Math 在连接顶点的边上创建中点';一个物体在三个物体中的位置_Math_3d_Three.js - Fatal编程技术网

Math 在连接顶点的边上创建中点';一个物体在三个物体中的位置

Math 在连接顶点的边上创建中点';一个物体在三个物体中的位置,math,3d,three.js,Math,3d,Three.js,向量3中的给定顶点数组 平方向量3[{-1,1,0},{1,1,0},{-1,-1,0},{1,-1,0}] 有没有办法修改矩阵并返回4个Verctor 如果我没弄错,那么: var angle = Math.PI / 4; // rotate 45 deg CCW, negative angle is CW var m = new THREE.Matrix4(); m.set( Math.cos(angle), Math.sin(angle), 0, 0, -Math.sin(ang

向量3中的给定顶点数组 平方向量3[{-1,1,0},{1,1,0},{-1,-1,0},{1,-1,0}] 有没有办法修改矩阵并返回4个Verctor


如果我没弄错,那么:

var angle = Math.PI / 4; // rotate 45 deg CCW, negative angle is CW
var m = new THREE.Matrix4();
m.set(
   Math.cos(angle), Math.sin(angle), 0, 0,
  -Math.sin(angle), Math.cos(angle), 0, 0,
   0              , 0              , 1, 0,
   0              , 0              , 0, Math.sqrt(2) // diagonal length is square root of 2 times of side length
);

var originals = [
  new THREE.Vector3(-1,  1, 0),
  new THREE.Vector3( 1,  1, 0),
  new THREE.Vector3(-1, -1, 0),
  new THREE.Vector3( 1, -1, 0)
];

function applyMatrix(points, matrix4){
  var result = [];
  points.forEach((point)=>{
    result.push(point.clone().applyMatrix4(matrix4));
  })
  return result;
}

var images = applyMatrix(originals, m);
示例r86

PS该解决方案与您在图片中给出的结果非常吻合