据我所知,四元数是一组四个值(W X Y Z),用于指定3D空间中的旋转。对于给定轴(x y z)和角度(α),四元数表示围绕轴从原点(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度?
文档仍然完全没用..
答案 0 :(得分:1)
尝试使用此方法Quaternion.makeFromAngleAndAxis(angle, v)
我发现这是使其更具可读性和可用性的最直接的方法。
<强> Example 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,得到1度2PI / 360或PI / 180。
摘要:
答案 1 :(得分:0)
刚刚在一篇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);
答案 2 :(得分:0)
尝试这种转换 - Transform.rotateZ(角度);
请参阅 - http://famo.us/docs/reference/pages/0.3/transforms.html