Vector3点集合中的随机点

时间:2013-09-28 10:58:37

标签: c# xna geometry

我在XNA中有一个程序,用户可以在其中绘制一个圆圈(不是一个完美的圆圈 - 用鼠标旋转一些东西)。生成的“圆圈”存储为Vector2点(屏幕空间)的列表。将它们转换为3d空间很简单,但是在转换它们之后我想要做的是将被环绕的区域视为平坦体积(Z:0处的所有物体)并用不完全统一的方式填充粒子。为此,我需要能够将粒子位置分配给所选区域内的随机点。我该如何做到这一点?

1 个答案:

答案 0 :(得分:1)

首先,通过浏览点列表找到点的边界框,并检测每个轴上的minmax点(即minX,{{1} },minYmaxX)。然后通过生成maxY(x, y)的数字对minX < x < maxX来生成自己的边界框中的一些随机点,并检查每个随机点以查看它是否在用户的“圆圈”内(通过使用Point in Polygon algorithm,技术上是多边形。如果一个点位于“圆圈”内,请保留;否则,生成一个不同的随机对。这应该给你minY < y < maxY个随机点。