如何生成距离给定平面的随机3D点?

时间:2015-03-06 14:35:38

标签: c# math random 3d

我有一个3点(三角形)的飞机。如何在指定距离的平面上生成随机点?生成点的投影也应该在三角形内。

1 个答案:

答案 0 :(得分:2)

我们有非共线点A,B,C 1.在0..1范围内生成两个随机值t和u。我们可以使用这些值来获得由矢量AB和AC形成的平行四边形中的均匀分布。为了在三角形中得到均匀分布,我们反映出第二个三角形的点,关于平行四边形对角线(伪代码的if分支)

enter image description here

t = random ( 0, 1 ) 
u = random ( 0, 1 )
if (t + u > 1 ) then
   t = 1 - t
   u = 1 - u
  1. 在三角形ABC中创建随机点P:
  2. P = A + t * AB + u * AC

    1. 将ABC移离ABC平面

      n = normalized(AB x AC)(矢量产品)

      P' = P + d * n

    2. 其中d - 需要距离