opengl 如何求三维平面斜率

ivqmmu1c  于 2022-12-23  发布在  其他
关注(0)|答案(3)|浏览(344)

我在场景中有一个3D地形,我有地形所有顶点的位置。
我想在这个地形上放置任何几何图形。目前我只能在顶点上放置3D模型,如下图所示。
例如,如果我在高亮显示的平面中渲染草,我需要计算平面的斜率,因此出现了这个问题。
如何计算3D平面的斜率,以获得由4个点组成的平面内的坐标?如前所述,我有组成平面的所有4个点。
还有,有没有其他更有效的方法来实现我正在尝试做的事情[与飞机的碰撞检测可能是?]

9jyewag0

9jyewag01#

把矩形变成三角形,这会使很多事情变得更简单,因为你的例子中的矩形可能不是平面的。
选择三角形的两条边并创建两个指向这两条边的向量(即v1 = p2 - p1v2 = p3 - p1)。要在上获取随机点,请使用:

p = p1 + v1*x + v2*y

其中p1是两个向量的共同起点,xy是0到1之间的随机数。如果(x+y)/2之和〉0.5,则该点位于三角形之外(也可以说它位于第二个三角形中)。
相关:

raogr8fs

raogr8fs2#

在3D空间中,如果4边形不是平面的,则没有唯一的方法来对其进行参数化。在将其最简单地拆分为2个三角形之后,一个简单的变体是使用参数化

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

这在边处是线性的,因此相邻的4边形将拟合在一起。
关键词:双线性(面片?)、重心坐标

zfciruhq

zfciruhq3#

想一想从山上滑下来。如果坡度最大,你会在向下的方向上滑得很快。你能滑的最大向下Angular 就是坡度(我们所要求的)。斜率是表面上与梯度的最大垂直角。所以它不是那么微不足道。也许这就是为什么这个问题没有简单的答案。如果山可以用一个平面很好地近似,ANS是“简单的”。在一座真实的的山上,坡度取决于你滑雪的地点(它取决于你在表面上的点,并随着你的坐标而变化)。

相关问题