我在 XNA 中有一个程序,用户可以在其中画一个圆圈(不是一个完美的圆圈——用鼠标徒手画一个圆圈)。生成的“圆”存储为 Vector2 点(屏幕空间)的列表。将它们转换为 3d 空间很简单,但在转换它们之后我想做的是将包围的区域视为一个平面体积(Z:0 处的所有内容)并以不完全均匀的方式填充粒子。为此,我需要能够将粒子位置分配给选定区域内的随机点。我将如何做到这一点?
首先,通过点列表找到点的边界框,并沿每个轴检测min
和点(即、、和)。然后通过生成数字对来在该边界框中生成一些随机点,例如和,并通过使用点中多边形算法检查每个随机点以查看它是否在用户的“圆”(技术上是多边形)内。如果一个点在“圆”内,则保留它;否则,生成不同的随机对。这应该给你随机点。max
minX
minY
maxX
maxY
(x, y)
minX < x < maxX
minY < y < maxY
N