gpt4 book ai didi

c++ - 圆内框外的随机位置

转载 作者:行者123 更新时间:2023-11-30 03:18:43 27 4
gpt4 key购买 nike

我需要在框外但在圆圈内找到一个随机位置。基本上是框和圆之间的随机位置。

我想做的是只 rand() 一个圆圈内的位置并检查该位置是否在框外,基本上是进行碰撞检查。

有没有比这个方法更高效的方法?

最佳答案

假设方框和圆的中心重合,执行此操作的一种有效方法是,您只需生成一个随机数两次:

  1. 随机化从圆的原点 [0, 2pi] 投影的角度
  2. 根据第 1 步中生成的角度从圆心发出的几何射线与框相交的位置,计算您可以生成的最小允许半径。
  3. 生成一个随机数 [0, (cirlce's radius - radius from step 2)]
    • 这可以使用 %fmod 完成

如果形状中心不重合,您可以通过将第 2 步分成 2 个步骤来稍微修改一下:

  1. 计算与框的第一个交点(如果存在)
  2. 计算与框的第二个交点(如果存在)

并将步骤 3 分为 2 步

  1. 如果找到 2 个交点,则生成一个随机数 [0,1] 以选择第一个或第二个有效范围(中心到第一个交点或第二个交点到圆的边缘)

  2. 生成所选范围内的随机数。

希望这对您有所帮助!

关于c++ - 圆内框外的随机位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54425762/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com