我在XNA中有一个程序,用户可以在其中绘制一个圆圈(不是一个完美的圆圈 - 用鼠标旋转一些东西)。生成的“圆圈”存储为Vector2点(屏幕空间)的列表。将它们转换为3d空间很简单,但是在转换它们之后我想要做的是将被环绕的区域视为平坦体积(Z:0处的所有物体)并用不完全统一的方式填充粒子。为此,我需要能够将粒子位置分配给所选区域内的随机点。我该如何做到这一点?
答案 0 :(得分:1)
首先,通过浏览点列表找到点的边界框,并检测每个轴上的min
和max
点(即minX
,{{1} },minY
和maxX
)。然后通过生成maxY
和(x, y)
的数字对minX < x < maxX
来生成自己的边界框中的一些随机点,并检查每个随机点以查看它是否在用户的“圆圈”内(通过使用Point in Polygon algorithm,技术上是多边形。如果一个点位于“圆圈”内,请保留;否则,生成一个不同的随机对。这应该给你minY < y < maxY
个随机点。