一下是我的学习笔记:
D3DXVec3project//将3D物理坐标点变到SURFACE的2D点
现在我来解释一下
1.3D物理坐标,看例子
声明 点 A( a,b,c);
DEVICE->SETTRANSFORM( WORLD,MATRIX)
DRAW (A)
此时A(a,b,c)为物理坐标
若MATRIX为单位矩阵那么A为世界坐标的点
什么叫SURFACE的2D点
是指每个程序中都有个MAIN SURFACE (DIRECTDRAW 里的主绘图页相似);
现在的SURFACE是指MAINSURFACE的总体或者小部分;
typedef struct D3DVIEWPORT9 {
DWORD X;
DWORD Y;
DWORD Width;
DWORD Height;
float MinZ;
float MaxZ;
}
结构体中指明了此目标SURFACE 是MAINSURFACE的哪一部分
一般情况是真个MAINSURFACE即目标SURFACE,这个结构体此时的设置为
{
0,
0,
MAINSURFACE.WIDTH,
MAINSURFACE.HEIGHT,
0.0,
1.0
}
此函数变换的3D坐标的Z值为0;
/////////与之相反(但是又不完全相反)的是
D3DXVec3Unproject
是将目标SURFACE变到3D物理坐标
但是此时的物理坐标并不是以前那个对应的3D屋里坐标了
而是——
视截体近面或者远体面中的3D坐标的物理坐标---这句话的理解是
:所求 3DPOS= (3D世界坐标点与EYE(摄影机的点都是世界坐标点不受SET WORLD 影响)的连线 )与近或远视
截面(当然是世界坐标)的焦点 ,再然后转换到物理坐标(即为结果)
CSDN上那个家伙估计是
先得到的2D坐标然后一转成里近的面里而其近面为0;
分享到:
相关推荐
5. **D3DXVec3CatmullRom.exe**: Catmull-Rom插值是一种四次样条插值,它可以生成平滑的曲线,适合于动画路径的生成和纹理贴图的平滑过渡。 6. **D3DXVec3TransformCoord.exe**: 此函数用于将一个向量从一个坐标...
本篇将详细介绍DirectX9.0中的几个常用向量函数:D3DXVec3Length、D3DXVec3Normalize和D3DXVec3Dot,以及D3DXVec3Cross,并提供相关的使用实例。 首先,我们来看D3DXVec3Length函数。这个函数用于计算3D向量的长度...
`ID3DXMatrix`类可以用于创建和操作变换矩阵,`D3DXVec3Project`或`D3DXVec3Unproject`函数可用于坐标转换。 在VS2003 .NET环境下,开发人员可能还需要处理一些兼容性问题,因为较旧的版本可能不支持后来引入的C++...
D3DXVec3Normalize(&vecLight, &vecLight); Light.Direction = vecLight; g_pD3DDevice->SetLight(0, &Light); g_pD3DDevice->LightEnable(0, TRUE); // Start playing a waterfall sound PlaySound("..\\...
`D3DXVECTOR3`类可以表示3D向量,`D3DXVec3Dot`函数用于向量点乘,`D3DXVec3Length`和`D3DXVec3Normalize`用于长度计算和归一化。同时,`D3DXPlaneFromPoints`等函数可以帮助处理边界面的检查。 ### 效率优化 为了...
D3DX库提供了`D3DXVec3Normalize()`函数,接收一个输入向量和一个输出向量的指针,返回规范化后的向量。规范化可以确保向量的方向不变,但长度变为1,这对光线追踪、碰撞检测等许多3D算法十分有用。 5. **向量的...
在DirectX 9中,向量长度的计算可以通过使用`D3DXVec3Length`函数来完成,该函数属于DirectX Math库。例如,假设我们有一个`D3DXVECTOR3`类型的向量`v`,我们可以这样获取其长度: ```cpp D3DXVECTOR3 v(1.0f, 2.0f...
- 提供了一些静态成员函数,如`D3DXVec3Normalize`用于归一化向量,`D3DXVec3Cross`用于计算两个向量的叉积等。 #### 5. 三维空间中的向量与坐标变换 在三维空间中,向量和坐标系是进行各种几何变换的基础。例如...
4. D3DXMATRIX、D3DXVec3:这些是DirectX Math库中的数据类型,分别代表4x4矩阵和三维向量。在3D图形编程中,矩阵用于表示变换(如旋转、平移和缩放),向量则用于表示方向和位置。D3DX库提供了许多数学函数,帮助...
此外,`D3DXVec3Normalize` 函数用于将向量单位化,`SetTransform()` 用于设置变换矩阵,`SetViewport()` 设置视口信息。`D3DXMatrix*` 系列函数则用于创建和操作矩阵,例如旋转、平移、缩放、求逆、转置以及观察和...
单位向量是模为1的向量,可以通过归一化操作(如`D3DXVec3Normalize`)获得。点乘和叉乘是向量运算的两种形式,点乘返回两个向量夹角的余弦值,叉乘则生成一个新的向量。 矩阵(D3DXMATRIX)是处理几何变换的核心工具...
这可以通过设置视口和投影矩阵,然后使用`D3DXVec3Unproject()`函数来完成。 4. **DirectInput库**:除了消息系统,还可以使用DirectInput库来获取更高级别的输入控制。DirectInput可以提供连续的鼠标位置更新,...
- **D3DXVec3TransformCoord**:用于执行向量变换。 - **D3DXMatrixRotationY**:用于创建绕Y轴旋转的变换矩阵。 - **D3DXPlaneDotCoord**:用于计算平面与点的关系。 #### 结论 通过对向量、矩阵、变换以及D3DX库...
当然,实际的代码实现会涉及到更具体的数学运算和DirectX3D API的调用,例如D3DXMatrixTransform()函数用于计算物体变换,D3DXVec3Normalize()用于处理向量的归一化,以及IDirect3DDevice9::SetVertexShader()和...
这可以通过`D3DXVec3Normalize`函数实现。 - **单位矢量**:长度为1的矢量称为单位矢量,对于计算来说更加方便。 #### 四、三角形与平面法线 - **三角形**:是Direct3D中最基本的几何元素,一个三角形由三个顶点...