如何将一个三维顶点投影到一个三维的平面

fba529635 2010-08-12 07:32:54
如何将一个三维顶点投影到一个三维的平面,顶点的坐标已知,平面的是一个矩形所在的平面,矩形的四个顶点坐标已知,法向量已经,请各位大虾指点一下~~
...全文
323 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fba529635 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xingzhe2001 的回复:]
引用 8 楼 fba529635 的回复:
我想到了一个办法,大家交流一下,看看怎样~~

(1) 取矩形平面上的一个点,如(m_dBeginX , m_dBeginY , m_dBeginZ),计算此点到当前顶点的向量;
(2) 用上一步得到的向量与矩形平面的单位法向量作点积得到的就是当前顶点到矩形平面的距离;
(3) 根据当前顶点在矩形平面的投影点的到当前顶点的向量是矩形平面单位法向……
[/Quote]

所见略同~~
ct025028 2010-08-16
  • 打赏
  • 举报
回复
膜拜数学大牛们
张赐 2010-08-15
  • 打赏
  • 举报
回复
其实很简单了啊,将该顶点平面的法线反方向投影即可

也就是求直线和平面的交点
xingzhe2001 2010-08-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fba529635 的回复:]
我想到了一个办法,大家交流一下,看看怎样~~

(1) 取矩形平面上的一个点,如(m_dBeginX , m_dBeginY , m_dBeginZ),计算此点到当前顶点的向量;
(2) 用上一步得到的向量与矩形平面的单位法向量作点积得到的就是当前顶点到矩形平面的距离;
(3) 根据当前顶点在矩形平面的投影点的到当前顶点的向量是矩形平面单位法向量的常数倍这一认识,可以用(X0 , Y0 ……
[/Quote]
可以,跟我的方案1是一样的
fba529635 2010-08-15
  • 打赏
  • 举报
回复
我想到了一个办法,大家交流一下,看看怎样~~

(1) 取矩形平面上的一个点,如(m_dBeginX , m_dBeginY , m_dBeginZ),计算此点到当前顶点的向量;
(2) 用上一步得到的向量与矩形平面的单位法向量作点积得到的就是当前顶点到矩形平面的距离;
(3) 根据当前顶点在矩形平面的投影点的到当前顶点的向量是矩形平面单位法向量的常数倍这一认识,可以用(X0 , Y0 , Z0)这一当前顶点坐标分别减去n*(i , j , k)(其中n为常数,(i , j , k)为矩形平面的单位法向量)得到当前顶点在矩形平面的投影点。
fba529635 2010-08-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 antimatterworld 的回复:]
C/C++ code
D3DXMATRIX *WINAPI D3DXMatrixShadow(D3DXMATRIX *pOut,CONST D3DXVECTOR4 *pLight,CONST D3DXPLANE *pPlane);
[/Quote]

我是想问OPENGL里面的~~
xingzhe2001 2010-08-13
  • 打赏
  • 举报
回复
补充俩种通用的
1. 点Q在平面上的投影
我们知道平面的方程为,P.r +d=0
点Q到平面的距离为 r = n.Q+d, 那么Q'的坐标就容易求出
Q'=Q-(n.Q+d)*n

2. 点Q到矩形(p0,p1,p2,p3)的投影

p0----p1
| |
p2----p3

设P=p0, 定义两条边e0 = p1-p0, e1 = p2-p0
那么Q的投影Q'为
Q'=P+(Q-P).e0*e0 +(Q-P).e1*e1

其中.表示点乘, *表示数乘
xingzhe2001 2010-08-13
  • 打赏
  • 举报
回复
补充俩种通用的
1. 点Q在平面上的投影
我们知道平面的方程为
点Q到平面的距离为, 那么Q'的坐标就容易求出


2. 点Q到矩形(p0,p1,p2,p3)的投影
p0----p1
| |
p2----p3
设P=p0, 定义两条边e0 = p1-p0, e1 = p2-p0
那么Q的投影Q'为
凤朝凰 2010-08-13
  • 打赏
  • 举报
回复
顶楼上,嘿嘿
antimatterworld 2010-08-12
  • 打赏
  • 举报
回复
D3DXMatrixShadow Function

Builds a matrix that flattens geometry into a plane.
 D3DXMATRIX * D3DXMatrixShadow(
__inout D3DXMATRIX *pOut,
__in const D3DXVECTOR4 *pLight,
__in const D3DXPLANE *pPlane
);


Parameters

pOut [in, out]
D3DXMATRIX

Pointer to the D3DXMATRIX structure that is the result of the operation.
pLight [in]
D3DXVECTOR4

Pointer to a D3DXVECTOR4 structure describing the light's position.
pPlane [in]
D3DXPLANE

Pointer to the source D3DXPLANE structure.

Return Value

D3DXMATRIX

Pointer to a D3DXMATRIX structure that flattens geometry into a plane.

If the light's w-component is 0, the ray from the origin to the light represents a directional light. If it is 1, the light is a point light.

点光源投影的时候VECTOR4类型向量的最后一个参数是1,方向光源投影的时候则为0。
antimatterworld 2010-08-12
  • 打赏
  • 举报
回复
D3DXMATRIX *WINAPI D3DXMatrixShadow(D3DXMATRIX *pOut,CONST D3DXVECTOR4 *pLight,CONST D3DXPLANE *pPlane);

8,305

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧