Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),

//*********************** ************************ LayaAir 2D **********************************************//

ape.x = ape.y = ape.pos(150, 100);
rotation : Number ,ape.rotation += 10; 旋转角度,默认值为0。以角度为单位。 2D项目只有绕着屏幕的法线正负旋 转,不用设置轴向,也没有轴向
ape.scale(0.5,0.5)
scaleX : Number ,X轴缩放值,默认值为1。设置为负数,可以实现水平反转效果,比如scaleX=-1。
scaleY : Number ,Y轴缩放值,默认值为1。设置为负数,可以实现垂直反转效果,比如scaleX=-1

pivotX : Number ,X轴 轴心点的位置,单位为像素,默认为0。轴心点会影响对象位置,缩放中心,旋转中心。
pivotY : Number ,Y轴 轴心点的位置,单位为像素,默认为0。轴心点会影响对象位置,缩放中心,旋转中心。

//*********************** ************************ LayaAir 3D **********************************************//
this.role3D.transform.position = new Laya.Vector3(0,1.2,0);
this.role3D…transform.rotate(new Laya.Vector3(-15, 0, 0), true, false);
this.role3D.transform.scale = new Laya.Vector3(0.7,0.7,0.7);

.transform.translate(new Laya.Vector3(0, 2, 4));
.clearColor.setValue(0, 0, 0, 1);

//*********************** ************************ Creator 2D **********************************************//
setPosition(newPosOrX: Vec2|number, y?: number): void;
getPositionAt(pos: Vec2|number, y?: number): Vec2;

setRotation(rotation: number): void;
getRotation(out: Quat): Quat;

setScale(scaleX: number|Vec2, scaleY?: number): void;
getScale(): number;

Quat 四元数旋转 Quat.multiply的叉乘 Quat.dot 四元数点积(数量积)
leap 插值运算
bezierTo 贝塞尔曲线
Tween.bezierTo
Tween(this.node).to(属性列表)

//*************************** 四元数的记法 *************************//
1.四元数的记法
定义:绕向量v旋转角度θ
q = 【[email protected]/2W , [email protected]

//*********************** ************************ Creator 3D **********************************************//

getScale(out: Vec3): Vec3;

欧拉角旋转
this.node.eulerAngles = cc.v3(45, 45, 45);;

四元数旋转
rotationTo
设置四元数为两向量间的最短路径旋转,默认两向量都已归一化

Quat.fromEuler
转换欧拉角到四元数
Quat.toEuler
转换四元数到欧拉角
Quat.getAxisAngle
获取四元数的旋转轴和旋转弧度

  1. 欧拉角的万向锁问题
    先看一个简单的欧拉旋转,如下图所示:欧拉旋转需要先确定旋转顺序,我们可以定义X-Y-Z的顺序(总共有12种旋转顺序),那么什么是万向锁呢,我们可以用手机在桌子上进行旋转,以手机的正面为xy平面,以手机的厚度的方向作为z轴,我们先绕x转一个角度,然后再绕y轴旋转90度,我们会发现一个问题,当我们再绕z轴旋转一个角度,效果等同于我开始绕x轴旋转另外一个角度,再绕y轴旋转90度就行了.

我们的欧拉旋转只能表示二维空间了,这是解我们的微分方程会出现退化现象,造成我们的微分方程无法解的情况。这样说似乎还是比较模糊,那么我们举一个例子:
Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),

如图所示:XwYwZw是世界坐标系,XiYiZi是机体坐标系,我们先绕Xi轴旋转30∘,再绕Yi旋转90∘,如下图所示:
Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),
此时我们的Xw和Zi在同一直线上,最后我们再绕Zi旋转40∘,如下图所示:
Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),
我们会发现一个问题,无论我们怎么旋转,我们的坐标都是(30,90,z),也就是绕z轴的旋转角度我们无法衡量的,这也就是我们的万向锁问题

**

3. 四元数推导

**
//**************************** 2维复数旋转 //
首先我们看一个复数p=a+bi在复平面的表示:
Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),
现在我们将它旋转角度θθ,先定义另外一个复数q=cosθ+isinθq=cosθ+isinθ,我们发现,复数的乘法表示了一种旋转:
qp=(acosθ−bsinθ)+i(asinθ+bcosθ)
qp=(acosθ−bsinθ)+i(asinθ+bcosθ)
Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),
//
**** 三维复数旋转 ******************************************//

我们看到了二维复数乘法可以表示旋转,那么三维空间呢。按照举一反三的思想,我们会想到再增加一个虚数作为第三个维度,这个就要涉及到我们的向量的叉乘,如下图所示:
Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),
向量叉乘的结果是两个向量构成平面的垂直向量,那么我们定义两个个三维的复数:
z1=a1+b1i+c1jz2=a2+b2i+c2j
z1=a1+b1i+c1jz2=a2+b2i+c2j

其中i2=j2=−1i2=j2=−1,我们类似的进行复数的乘法,得到:
z1z2=(a1a2−b1b2−c1c2)+(a1b2+a2b1)i+(a1c2+a2c1)j+b1c2ij+b2c1ji
z1z2=(a1a2−b1b2−c1c2)+(a1b2+a2b1)i+(a1c2+a2c1)j+b1c2ij+b2c1ji

![在这里插入图片描述](https://img-blog.****img.cn/20200713195048178.png
Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),
可以得到下列关系:
Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),
由于叉乘的定义得到的结果就是法向量,所以 ij = -ji = k k就代表法向量了

Quaternion作用于Vector3的右乘操作(*)返回一个将向量做旋转操作后的向量.
因此Quaternion.Euler(0,90,0)*Vector3(0.0,0.0,-10)
表示将向量Vector3(0.0,0.0,-10)做绕y轴90度旋转后的结果.因该等于Vector3(-10,0,0).

Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),

首先,定义一个你需要做的旋转。旋转轴为向量 V= (Vx,Vy ,Vz)Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),,旋转角度为Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),(右手法则的旋转)。如下图所示:
此图中Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),
Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),
那么与此相对应的四元数(下三行式子都是一个意思,只是不同的表达形式)
Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),
Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),
Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),
这时它的共轭(下三行式子都是一个意思,只是不同的表达形式),
Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),
Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),
Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),

Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),
这个x写法应该是绕 这个 V = (Vx , Vy , Vz) 旋转了 Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),

//************************************************* 向量的 点乘 ********************************************************************//

Creator与Laya的Node 操作位置,旋转,缩放,四元数表示第四个元素(即是复数,就是说在四维空间额能运算),