DirectX9.0常用平面函数

DirectX9.0常用平面函数

一.平面基本概念:
n*p + d = 0;
D3DXPLANE包含了a,b,c,d三个变量
a,b,c构成平面的法向量n,d=-n*p;


1.平面的方程式:
ax+by+cz=d;

先说一下高中的向量知识:
问:在一个平面上已经知道平面的法向量n(a,b,c),和平面上的任意点P(x,y,z),以及一个已经点R(x0,y0,z0)求平面方程?
解法:
RP = (x-x0, y-y0, z-z0);
RP*n = 0;(垂直定理)
a(x-x0)+b(y-y0)+c(z-z0)=0;
化简:ax+by+cz+d=0;
由以上得只要知道向量和平面上任意直线就可以得到平面的方程,所以得到n*p+d=0;

 

//给定一个平面和一个点就可以计算n*p+d=0中的d可以用来判断点所在的大概位置
D3DXPlaneDotCoor
FLOAT D3DXPlaneDotCoord(
  CONST D3DXPLANE * pP,
  CONST D3DXVECTOR3 * pV
);

 

//给定法线n和不在法线n上的点确定一平面
D3DXPlaneFromPointNormal
D3DXPLANE * D3DXPlaneFromPointNormal(
  D3DXPLANE * pOut,
  CONST D3DXVECTOR3 * pPoint,
  CONST D3DXVECTOR3 * pNormal
);

 

//由平面上已知3点求平面
D3DXPlaneFromPoints
D3DXPLANE * D3DXPlaneFromPoints(
  D3DXPLANE *pOut,
  CONST D3DXVECTOR3 *pV1,
  CONST D3DXVECTOR3 *pV2,
  CONST D3DXVECTOR3 *pV3
);

 

//平面的规范化
D3DXPlaneNormalize
D3DXPLANE * D3DXPlaneNormalize(
  D3DXPLANE * pOut,
  CONST D3DXPLANE * pP
);

 

//平面的变换
D3DXPlaneTransform
D3DXPLANE * D3DXPlaneTransform(
  D3DXPLANE *pOut,
  CONST D3DXPLANE *pP,
  CONST D3DXMATRIX *pM
);

 

相关代码见

 http://download.csdn.net/source/1791815

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值