用python生成随机矩形,如何在矩形外生成随机点?

假设我的窗户尺寸是400宽600高。在

在单侧生成一个随机点相对容易,比如说顶部:random.randint(0, width)

但是,什么是最聪明的方法来让这四个边都工作,这样一个随机点在一个矩形之外生成?在

如果我这么做

^{pr2}$

他们只会出现在角落,这是有道理的。我能想到的唯一方法是在矩形内随机创建一个点,比较哪个轴最接近边界,然后夹紧它。问题是我不知道如何优雅地做到这一点,不做4个检查每一方(这感觉多余)。我觉得有更简单的解决方法吗?在

这是一个几乎可行的解决方案,但它是如此冗长。只是意识到这样在角落里得到的点数更少。在# Create a random point inside the rectangle

pos_x = random.randint(0, width)

pos_y = random.randint(0, height)

# Get a distance for each side

left_border = pos_x

right_border = width-pos_x

top_border = pos_y

bottom_border = height-pos_y

borders = [left_border, right_border, top_border, bottom_border]

index_1 = 0

index_2 = 2

closest_side = 0

# Get closest from left/right borders

if right_border < left_border:

index_1 = 1

# Get closest from top/bottom borders

if bottom_border < top_border:

index_2 = 3

# Get closest border

if borders[index_1] < borders[index_2]:

closest_side = index_1

else:

closest_side = index_2

if closest_side == 0:

obj.pos.x = 0 # Clamp to left wall

elif closest_side == 1:

obj.pos.x = width # Clamp to right wall

elif closest_side == 2:

obj.pos.y = 0 # Clamp to top wall

else:

obj.pos.y = height # Clamp to bottom wall

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值