D3D数学基础(初级篇)
来源:互联网 发布:卡盟附带支付源码 编辑:程序博客网 时间:2024/05/20 07:34
Direct3D游戏开发学习笔记3——D3D数学基础(初级篇) (转)
一、数学工具在虚拟3D世界中的作用、D3D与D3DX的关系:
1、数学的作用:数学是搭建虚拟3D世界的基础,角色控制、动画、关照计算、阴影计算、特效显示等等,数学在里面都起着支柱作用;
2、D3D与D3DX的关系:D3D是基本库的函数,任何跟基本渲染包括和硬件打交道的底层操作都在这里,它是必需。D3DX是扩展库函数,是做辅助开发用的,封装了很多方便使用的功能,就算没有它也可以完成所有的渲染,只是很多东西得自己动手写而已;
二、向量的定义、计算:
1、定义:既包括大小由包括方向的量,由两个顶点来描述(注意在D3D中所说的向量一般指自由向量,即起点为坐标原点的向量),在D3D中对应D3DVECTOR结构,在D3DX中对应D3DXVECTOR3,D3DXVECTOR3是对D3DVECTOR的继承,它保留D3DVECTOR的数据成员的同时还重载了向量运算可能出现的各种运算符(如==、!=、+、-、*、/);
2、计算:
1)判断向量相等 D3DX中对应==运算符;
2)向量的模/长度 D3DX中对应FLOAT D3DXVec3Length(CONST D3DXVECTOR3 *pV)接口;
3)向量加/减法 D3DX中对应+/-运算符;
4)向量单位化 即方向不变长度变为1 D3DX中对应D3DXVECTOR3 *WINAPI D3DXVec3Normalize(D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV) 接口;
5)向量放缩 D3DX中对应*运算符;
6)向量点乘 结果用于判断两向量间的夹角 D3DX中对应FLOAT D3DXVec3Dot(CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2) 接口;
7)向量叉积 结果为垂直于参与计算的的两个向量,方向遵守右手法则(右手四指环绕相乘的两向量 大拇指指向的方向) D3DX中对应D3DXVECTOR3 *D3DXVec3Cross(D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2)接口;
三、矩阵、物体世界矩阵、计算:
1、矩阵:一个按行列排列的数组,在D3D中对应D3DMATRIX结构是一个4*4矩阵,在D3DX中对应D3DXMATRIX,D3DXVECTOR3MATRIX是对D3DMATRIX的继承,它保留D3DMATRIX的数据成员的同时还重载了向量运算可能出现的各种运算符(如==、!=、+、-、*、/);
2、物体世界矩阵:是对物体Look(面向方向)、Up(头顶方向)、Right(右手方向)、Position(位置向量)共四个向量进行分行存储得到的矩阵;
3、计算:
1)加/减/乘 D3DX中对应+/-/*运算符;
2)单位化 D3DX中对应D3DXMATRIX *D3DXMatrixIdentity(D3DXMATRIX *pOut
)接口;
3)平移矩阵 D3DX中对应D3DXMATRIX *WINAPI D3DXMatrixTranslation(D3DXMATRIX *pOut, FLOAT x, FLOAT y, FLOAT z)接口;
4)旋转矩阵 D3DX中对应D3DXMATRIX *WINAPI D3DXMatrixRotationX/Y/Z(D3DXMATRIX *pOut, FLOAT Angle)接口;
5)放缩矩阵 D3DX中对应D3DXMATRIX *WINAPI D3DXMatrixScaling(D3DXMATRIX *pOutFLOAT sx, FLOAT sy, FLOAT sz)接口;
注意:在对物体世界矩阵进行变换的顺序为:先放缩后旋转再平移
在对视矩阵进行变换的顺序为:先平移后旋转 无需放缩
四、其它常用数学函数和变换接口:
1、创建绕向量旋转的矩阵的函数:D3DXMATRIX *WINAPI D3DXMatrixRotationAxis( D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pV, FLOAT Angle);
2、用旋转矩阵旋转向量的函数:D3DXMATRIX *WINAPI D3DXMatrixRotationAxis( D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pV, FLOAT Angle);
说明:利用以上两个函数可以控制A向量绕B向量旋转
3、创建绕向量旋转的四元数的函数:D3DXQUATERNION *WINAPI D3DXQuaternionRotationAxis(D3DXQUATERNION *pOut, CONST D3DXVECTOR3 *pV, FLOAT Angle);
4、创建绕X、Y、Z轴旋转的四元数的函数:D3DXQUATERNION *WINAPI D3DXQuaternionRotationYawPitchRoll(D3DXQUATERNION *pOut, FLOAT Yaw, FLOAT Pitch, FLOAT Roll);
5、转换四元数为旋转矩阵的函数:D3DXMATRIX *WINAPI D3DXMatrixRotationQuaternion(D3DXMATRIX *pOut, CONST D3DXQUATERNION *pQ);
- D3D数学基础(初级篇)
- Direct3D游戏开发学习笔记3——D3D数学基础(初级篇)
- DirectX初级篇01 -- 基本概念及D3D设备
- D3D常用数学函数
- d3d 之数学库
- d3d设备基础
- D3D纹理基础
- d3d基础入门
- 3D游戏基础 Direct3D(二) D3D初始化
- (一)数学基础篇
- 数学基础:向量篇
- lightoj(基础数学)
- mycat-初级篇之零基础部署(windows)
- 【D3D Review】D3DX基础数学知识
- D3D基础之绘制状态
- IT初级英语词汇·基础篇
- 零基础学习openstack【初级篇】
- Php基础数学运算篇
- Windows Communication Foundation Authentication Service Overview
- 黑马程序员—网络编程笔记
- poj1042(枚举+贪心 C语言)
- 2.管理数据库和表
- Doxyfile的使用
- D3D数学基础(初级篇)
- 程序员必知8大排序3大查找
- windows安装基于Apache的SVN服务器(包括SSL配置)
- 二叉树的非递归遍历
- Mysql学习1
- android 音频技术知识点总结。持续更新中。。。
- C语言夜未眠5——变量前缀代表的含义
- Windows 7中快速在当前目录打开cmd
- 概念--未定义行为