四轴绕z轴旋转

据我所知,四元数是一组四个值(WXYZ),用于指定3D空间中的旋转。 对于给定轴(xyz)和角度(α),四元数表示围绕从原点(0,0,0)到(x,y,z)的轴的旋转。 所以围绕z轴(0 0 1)旋转90度应该是:

var quaternion = new Quaternion(Math.PI/2, 0, 0, 1);

但是,famo.us将它变成60度左右......

我也试过var quaternion = new Quaternion(90, 0, 0, 1); 但在这种情况下,famo.us将其转动5度左右

它是框架的错误吗?
我应该如何使用它将它围绕z轴旋转90度?
文档仍然完全没用。


尝试使用这种方法Quaternion.makeFromAngleAndAxis(angle, v)我发现这是最直接的方法,使其更具可读性和可用性。

示例jsBin

哪里

var degrees = 90;    
var angle = Math.PI/180 * degrees;
var v = new Vector(0, 0, 1);

var quaternion = new Quaternion();
quaternion.makeFromAngleAndAxis(angle, v);

...为了获得转换

quaternion.getTransform();

数学课要记住的东西

一个圆圈有360度。 每个度由圆2 * PI * r的单位周长表示。 我们假设我们的半径为1.因此,将总周长除以360,得到一个度数2PI / 360或PI / 180。

综上所述:

  • 我们的圈子的一度是= Math.PI / 180
  • 你的方向角是= Math.PI / 180 *度

  • 刚刚在一篇wiki文章中找到答案:

    var angle = Math.PI/2;
    var axis = [0,0,1];
    
    var w = Math.cos(.5 * angle);
    var x = axis[0] * Math.sin(.5 * angle);
    var y = axis[1] * Math.sin(.5 * angle);
    var z = axis[2] * Math.sin(.5 * angle);
    var quaternion = new Quaternion(w, x, y, z);
    

    尝试这种转换 - Transform.rotateZ(an​​gle);

    请参阅 - http://famo.us/docs/reference/pages/0.3/transforms.html

    链接地址: http://www.djcxy.com/p/81863.html

    上一篇: famo.us quaternion rotation around z axis

    下一篇: Why won't my Quaternion rotate properly?