我在场景中有一个3D地形,我有地形所有顶点的位置。我想在这个地形上放置任何几何图形。目前我只能在顶点上放置3D模型,如下图所示。例如,如果我在高亮显示的平面中渲染草,我需要计算平面的斜率,因此出现了这个问题。如何计算3D平面的斜率,以获得由4个点组成的平面内的坐标?如前所述,我有组成平面的所有4个点。还有,有没有其他更有效的方法来实现我正在尝试做的事情[与飞机的碰撞检测可能是?]
9jyewag01#
把矩形变成三角形,这会使很多事情变得更简单,因为你的例子中的矩形可能不是平面的。选择三角形的两条边并创建两个指向这两条边的向量(即v1 = p2 - p1和v2 = p3 - p1)。要在上获取随机点,请使用:
v1 = p2 - p1
v2 = p3 - p1
p = p1 + v1*x + v2*y
其中p1是两个向量的共同起点,x和y是0到1之间的随机数。如果(x+y)/2之和〉0.5,则该点位于三角形之外(也可以说它位于第二个三角形中)。相关:
p1
x
y
(x+y)/2
raogr8fs2#
在3D空间中,如果4边形不是平面的,则没有唯一的方法来对其进行参数化。在将其最简单地拆分为2个三角形之后,一个简单的变体是使用参数化
p1+(p2-p1)*x+(p3-p1)*y+(p4-p3-p2+p1)*x*y, 0 <= x,y <= 1
这在边处是线性的,因此相邻的4边形将拟合在一起。关键词:双线性(面片?)、重心坐标
zfciruhq3#
想一想从山上滑下来。如果坡度最大,你会在向下的方向上滑得很快。你能滑的最大向下Angular 就是坡度(我们所要求的)。斜率是表面上与梯度的最大垂直角。所以它不是那么微不足道。也许这就是为什么这个问题没有简单的答案。如果山可以用一个平面很好地近似,ANS是“简单的”。在一座真实的的山上,坡度取决于你滑雪的地点(它取决于你在表面上的点,并随着你的坐标而变化)。
3条答案
按热度按时间9jyewag01#
把矩形变成三角形,这会使很多事情变得更简单,因为你的例子中的矩形可能不是平面的。
选择三角形的两条边并创建两个指向这两条边的向量(即
v1 = p2 - p1
和v2 = p3 - p1
)。要在上获取随机点,请使用:其中
p1
是两个向量的共同起点,x
和y
是0到1之间的随机数。如果(x+y)/2
之和〉0.5,则该点位于三角形之外(也可以说它位于第二个三角形中)。相关:
raogr8fs2#
在3D空间中,如果4边形不是平面的,则没有唯一的方法来对其进行参数化。在将其最简单地拆分为2个三角形之后,一个简单的变体是使用参数化
这在边处是线性的,因此相邻的4边形将拟合在一起。
关键词:双线性(面片?)、重心坐标
zfciruhq3#
想一想从山上滑下来。如果坡度最大,你会在向下的方向上滑得很快。你能滑的最大向下Angular 就是坡度(我们所要求的)。斜率是表面上与梯度的最大垂直角。所以它不是那么微不足道。也许这就是为什么这个问题没有简单的答案。如果山可以用一个平面很好地近似,ANS是“简单的”。在一座真实的的山上,坡度取决于你滑雪的地点(它取决于你在表面上的点,并随着你的坐标而变化)。