我需要在一个盒子外面找到一个随机的位置,但是在一个圆里面。 基本上是盒子和圆之间的随机位置。
我想做的就是将rand()放在圆内,然后检查该位置是否在盒子外面,基本上是进行碰撞检查。
有没有比这种方法更有效的方法?
答案 0 :(得分:2)
假设框和圆的中心重合,那么一种有效的方法是,您只需生成两次随机数即可:
%
或fmod
如果形状中心不重合,则可以通过将步骤2分为2个步骤来对其进行稍微修改:
并将第3步分为2步
如果找到2个交点,则生成一个随机数[0,1]以选择第一个或第二个有效范围(从中心到第一个交点或从第二个交点到圆的边缘)
生成选定范围内的随机数。
希望这会有所帮助!