Javascript矩阵代码不起作用

时间:2017-02-08 02:57:39

标签: javascript rotation

我试图在JS代码中实现任意旋转矩阵,但最终得到了错误的值。

enter image description here

function dotProduct(v1, v2) {
  return Math.round(v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2]);
}

function matrixMultiply(matrix, v) {
  return [dotProduct(matrix[0], v), dotProduct(matrix[1], v), dotProduct(matrix[2], v)];
}

function toRadians(angle) {
  return angle * (Math.PI / 180);
}

function aRotate(p, v, a) {
  var ca = Math.cos(a),
    sa = Math.sin(a);
  var r = [
    [ca + v[0] * v[0] * (1 - ca), v[0] * v[1] * (1 - ca) - v[2] * sa, v[0] * v[2] * (1 - ca) + v[1] * sa],
    [v[0] * v[1] * (1 - ca) + v[2] * sa, ca + v[1] * v[1] * (1 - ca), v[1] * v[2] * (1 - ca) - v[0] * sa],
    [v[2] * v[0] * (1 - ca) - v[1] * sa, v[2] * v[1] * (1 - ca) + v[0] * sa, ca + v[2] * v[2] * (1 - ca)]
  ];
  return matrixMultiply(r, p);
}

var p = aRotate([100, 0, 0], [0, 0, 100], toRadians(90));
console.log(p);

我将(100,0,0)绕轴(0,0,100)旋转90度。我希望得到(0,100,0),但我得到(0,10000,0)

有谁知道什么是错的?

由于

0 个答案:

没有答案