gpt4 book ai didi

python - 有效地检查矩形和圆的扇形之间的碰撞

转载 作者:太空宇宙 更新时间:2023-11-03 15:12:04 25 4
gpt4 key购买 nike

嘿,我想知道是否有人知道用于检查矩形和圆的扇形之间的碰撞的代码,我知道该怎么做,但我这样做的方式效率很低,这是基本理论:

def is_inside_sector(rect, circle_center, radius, sector_point_A, sector_point_B):
#the rect is a tuple with the coordinate of the 4 corners
#the sector_point_A is the point on the edge of the sector and the circle
#the sector_point_B is the other one

angle_A = sector_point_A.angle_to(vec(radius, 0)) % 360
#calculate the angle of the first sector point

angle_B = sector_point_B.angle_to(vec(radius, 0)) % 360
#same for the second one

for corner in rect:
if circle_center.distance_to(corner) <= radius:
if corner.angle_to(vec(radius, 0)) <= angle_A and corner.angle_to(vec(radius, 0)) >= angle_B:
return True
else:
return False
#this checks if any corner is in the sector, if yes, the rect and the sector collide

现在我知道代码有很多缺陷,但我没有完成它。

有可能矩形和扇区发生碰撞,而矩形的任何角都不在扇区内,我将通过检查扇区的 3 个角(circle_center、sector_point_A、sector_point_B)中的任何一个是否在扇区内来修复此问题。直角。

简单的东西,这将是一个非常好的碰撞检查,但是!你必须检查7点!这太慢了,你必须检查矩形的任何角是否在扇区内,并且你必须检查扇区的任何角是否在矩形内,它会给你 100% 的准确度,但速度太慢了。

有什么方法可以检查扇区和矩形的碰撞而不使用荒谬的函数吗?

非常感谢您在这方面帮助我,如果您需要,我将按照我的解释进行一个真正的功能测试这 7 点,我写的那个是在旅途中制作的

最佳答案

大概你的意思是,通过圆的扇区Sthe Wikipedia definition: ⌔ 。您需要三个函数:

  1. 给定点p是否位于扇区S中?
  2. 两条线段相交吗?
  3. 线段是否与圆弧相交?

我不明白如果没有这三种情况,你如何能够涵盖所有情况。三人均已进行了广泛的探索,代码可以在整个网络上找到。

<小时/> Sector

<小时/>

关于python - 有效地检查矩形和圆的扇形之间的碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44143937/

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