U3D游戏开发基础

向量:

1. 向量的长度,即向量的模。计算公式为向量各个分量的平方和,然后开平方。

   在D3DX库中,方法为:FLOAT  D3DXVec3Length(CONST  D3DXVECTOR3 * pV);

   在U3D中,成员变量为:magnitude

2. 向量的规范化,使向量的模变为1。通过将每个分量除以向量的模可以使向量规范化。

在D3DX库中,方法为:D3DXVECTOR3 * D3DXVec3Normalize(

 D3DXVECTOR3 * pOut ,  // 输出结果

 CONST D3DXVECTOR3 * pV  //需要规范化的向量

)

在U3D中,成员变量为:normalized

3. 数乘。数值与向量的各分量相乘,可对向量进行缩放。正数时向量方向不变,负数时向量方向相反。

4. 点积。等于向量对应的分量相乘,然后求和。根据余弦定理可以发现,等于两个向量的模的乘积再乘以两个向量夹角的余弦。

在D3DX库中,方法为:FLOAT D3DXVec3Dot(

CONST D3DXVECTOR3 * pV1, CONST D3DXVECTOR3 * pV2)

在U3D中,方法:public static float Dot(Vector3 lhs, Vector3 rhs);

5. 叉积。结果为另一个向量,向量U,V的叉积,运算得向量P与U和V都正交。

P=U×V=[(UYVZ-UZVY),(UZVX-UXVZ),(UXVY-UYVX)]

在D3DX库中,方法为:D3DXVECTOR3 * D3DXVec3Cross(

D3DXVECTOR3 * pOut,

CONST D3DXVECTOR3 * pV1,

CONST D3DXVECTOR3 * pV2

)

在U3D中,方法:public static Vector3 Cross(Vector3 lhs, Vector3 rhs);

 

四元数:

四元数包含一个标量和一个三维向量。四元数Q可以记做:Q=[w,(x,y,z)]

在U3D中四元数用Quaternion类来表示。

其常用的变量和函数如下截图表:

在游戏对象的Transform组件中,变量Transform.rotation为对象在世界坐标系下的旋转,Transform.localRotation为对象在父对象的局部坐标系下的旋转。两个变量类型为四元数,改变他们就可以设置对象的旋转了。

如以下的转换或运算:

        var angle = 0.0;//旋转角度

        var axis = Vector3.zero; //旋转轴。

        transform.rotation.ToAngleAxis(angle, axis);

 

        transform.rotation = Quaternion.identity;//局部坐标系的坐标轴与世界坐标系的坐标轴平行

 

Transform. TransformPoint()方法将坐标点从局部坐标系转换到世界坐标系;

Transform. InverseTransformPoint ()方法将坐标点从世界坐标系转换到局部坐标系;

Transform.TransformDirection()和Transform.InverseTransformDirection()则是对向量进行两个坐标系之间的转换。

posted @ 2014-05-28 16:30  hometown  阅读(670)  评论(0编辑  收藏  举报