如何找到3D平面的斜率

时间:2014-05-20 15:16:11

标签: opengl graphics 3d game-physics

我的场景中有一个3D地形,我有地形所有顶点的位置。

我想在程序上将任何几何体放在这个地形上。目前我只能将3D模型放在顶点上,如下图所示。

如果我要在突出显示的平面上渲染草,我需要计算平面的斜率,因此问题。

如何计算3D平面的坡度以获得由4个点构成的平面内的坐标?如前所述,我拥有制造飞机的所有4个点。

还有其他更有效的方法来实现我想要做的事情[与飞机的碰撞检测可能是?]

enter image description here

2 个答案:

答案 0 :(得分:2)

将矩形变为三角形。这将使许多事情变得更简单,因为示例中的矩形可能不是平面的。

选择三角形的两边并创建两个指向这些边的向量(即v1 = p2 - p1v2 = p3 - p1)。要获得随机点,请使用:

p = p1 + v1*x + v2*y

其中p1是两个向量的公共起点,xy是0到1之间的随机数。如果(x+y)/2的总和是> 0.5,然后该点在三角形之外(你也可以说它在第二个三角形中)。

相关:

答案 1 :(得分:1)

如果不是平面的话,没有一种独特的方法可以在3D空间中对4-gon进行参数化。在最简单的将其拆分为2个三角形之后,一个简单的变体就是使用参数化

p1+(p2-p1)*x+(p3-p1)*y+(p4-p3-p2+p1)*x*y,  0 <= x,y <= 1

这在边缘处是线性的,因此相邻的4-gons将组合在一起。

关键词:双线性(补丁?),重心坐标