Direct3D数学基础函数
2014-12-07 21:04
162 查看
一、向量:1.直接相等加减直接D3DXVec3LengthD3DXVec3Normalize数乘直接[b]2.点乘D3DXVec3Dot[/b]点乘D3DXVec3Dot,主要计算夹角(投影角)V1( x1, y1).V2(x2, y2) = x1*x2 + y1*y2A.B = |A||B|Cos(θ)FLOAT D3DXVec3Dot( _In_ const D3DXVECTOR3 *pV1, _In_ const D3DXVECTOR3 *pV2);3.叉乘D3DXVec3Cross叉乘D3DXVec3Cross,主要计算平面的法向量|A x B| = |A||B|Sin(θ)a= [a1, a2, a3] =a1i+ a2j+ a3kb= [b1,b2,b3]=b1i+ b2j+ b3k ;则a × b= [a2b3-a3b2,a3b1-a1b3, a1b2-a2b1]D3DXVECTOR3* D3DXVec3Cross( _Inout_ D3DXVECTOR3 *pOut, _In_ const D3DXVECTOR3 *pV1, _In_ const D3DXVECTOR3 *pV2);二、矩阵:1.直接相等加减直接数乘直接矩阵乘以矩阵:
D3DXMATRIX* D3DXMatrixMultiply( _Inout_ D3DXMATRIX *pOut, // 矩阵相乘所得结果 _In_ const D3DXMATRIX *pM1,// 输入矩阵1 _In_ const D3DXMATRIX *pM2 // 输入矩阵2 );2.单位/转置/逆矩阵单位矩阵:D3DXMatrixIdentityD3DXMATRIX* D3DXMatrixIdentity( _Inout_ D3DXMATRIX *pOut);转置D3DXMatrixTransposeD3DXMATRIX* D3DXMatrixTranspose( _Inout_ D3DXMATRIX *pOut, _In_ const D3DXMATRIX *pM);逆D3DXMatrixInverseD3DXMATRIX* D3DXMatrixInverse( _Inout_ D3DXMATRIX *pOut, _Inout_ FLOAT *pDeterminant, // 行列式的值,如果行列式值为NULL也是可以的,否则用伴随矩阵/行列式值求得矩阵的逆 _In_ const D3DXMATRIX *pM);3.平移D3DXMatrixTranslation
D3DXMATRIX* D3DXMatrixTranslation( _Inout_ D3DXMATRIX *pOut, _In_ FLOAT x, _In_ FLOAT y, _In_ FLOAT z );4.旋转D3DXMatrixRotationX/Y/Z
D3DXMATRIX* D3DXMatrixRotationX( _Inout_ D3DXMATRIX *pOut, _In_ FLOAT Angle // 弧度角,旋转方向是从旋转轴的正方向往原点看的顺时针方向 );5.缩放D3DXMatrixScaling
D3DXMATRIX* D3DXMatrixScaling( _Inout_ D3DXMATRIX *pOut, _In_ FLOAT sx, _In_ FLOAT sy, _In_ FLOAT sz );6. 3D点/向量乘以矩阵实现真正物体变换点乘矩阵:D3DXVec3TransformCoord将结果向量第四个设置为1,D3DXVec3TransformNormal将结果向量第四个设置为0.
//Coordinate是坐标系,基于坐标点的变换,需要将向量解释为2D/3D点
//变换向量将第四位置为1,需要考虑平移(pV->x, pV->y, pV->z, 1)
D3DXVECTOR3* D3DXVec3TransformCoord( _Inout_ D3DXVECTOR3 *pOut, _In_ const D3DXVECTOR3 *pV, _In_ const D3DXMATRIX *pM // 都是考虑平移的矩阵 );
// Normal是法向量,就是纯向量的变换,向量是只有大小和方向的,需要将向量解释为2D/3D纯向量
//变换向量将第四位置为0,也就是忽略平移(pV->x, pV->y, pV->z, 0)
D3DXVECTOR3* D3DXVec3TransformNormal( _Inout_ D3DXVECTOR3 *pOut, _In_ const D3DXVECTOR3 *pV, _In_ const D3DXMATRIX *pM //都是考虑平移的矩阵 );点数组和向量数组乘以矩阵:D3DXVec3TransformCoordArray/D3DXVec3TransformNormalArray.
D3DXVECTOR3* D3DXVec3TransformCoordArray( _Inout_ D3DXVECTOR3 *pOut, _In_ UINT OutStride, // 输出数组元素的字节步长,sizeof(D3DVECTOR3)或者sizeof(VERTTEX)都可以 _In_ const D3DXVECTOR3 *pV, _In_ UINT VStride, // 输入数组元素的步长sizeof(D3DXVECTOR3) _In_ const D3DXMATRIX *pM, _In_ UINT n );
D3DXVECTOR3* D3DXVec3TransformNormalArray( _Inout_ D3DXVECTOR3 *pOut, _In_ UINT OutStride,// 输出数组步长 _In_ const D3DXVECTOR3 *pV, _In_ UINT VStride, // 输入数组步长 _In_ const D3DXMATRIX *pM, _In_ UINT n );
D3DXVec3TransformNormalArray参数和CoordArray一样。
相关文章推荐
- Direct3D数学基础函数
- JAVA数学函数基础练习
- [C++STDlib基础]关于数学函数的介绍——C++标准库头文件<cmath>
- Logistic回归-代价函数求导过程 | 内含数学相关基础
- 高中数学基础02:反函数与基本初等函数
- 高中数学基础01:集合与函数
- Oracle 基础语句 函数大全(字符串函数,数学函数,日期函数,逻辑运算函数...
- Python 基础语法——数字和表达式(包含数学上的一些函数)
- 数学基础 -- 基础定义(集合、实数集、映射、函数)
- 人工智能数学基础-函数对称
- [unity3D基础知识]之Unity3d 旋转中Quaternion的数学知识及各个函数说明
- 数学基础知识及函数
- SQL基础(廿三)--- 数学函数
- python基础--数学函数
- 2、Python基础--除法、常用数学函数
- Python修炼--常用字符串、数学函数 分类: python基础学习 2013-06-16 13:23 205人阅读 评论(0) 收藏
- Oracle基础 (十二)数学函数
- php学习基础篇之基础函数(数学 日期 字符串)、php循环流程控制
- R语言基础(一)-常用数学函数与定义
- 【机器学习数学基础之概率论02】随机变量的分布函数及单值