opengl - 如何求 3D 平面的斜率

标签 opengl graphics 3d game-physics

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

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

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

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

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

enter image description here

最佳答案

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

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

p = p1 + v1*x + v2*y

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

相关:

关于opengl - 如何求 3D 平面的斜率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23763796/

相关文章:

algorithm - 有组织点云的水密表面重建算法

c++ - 四边形上的 OpenGL 纹理未对齐

c++ - 如何避免远距离的Z-fighting?

java - 在 JPanel 上短时间内画很多画

c++ - 在 OpenGL 中旋转一个对象在它自己的轴上

python - 使用具有 > 2 个参数的用户定义函数的 matplotlib 绘制 3d 曲面

c++ - glTranslatef 拉伸(stretch)我的球体,如何在不拉伸(stretch)球体的情况下平移球体?

c++ - 将 OpenGL 代码从 C++ 移植到 Python

graphics - 重新编写并使用重新处理

c++ - 在前景中呈现文本