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
现在,我知道代码有很多缺陷,但我没有完成它。
有可能矩形和扇区碰撞而没有任何一个矩形角落在扇区内部,我会通过检查扇区的三个角(circle_center,sector_point_A,sector_point_B)是否位于扇区内来解决这个问题。 RECT。
简单的东西,这将是一个非常好的碰撞检查但是!你要检查7点!这是非常慢,你必须检查矩形的任何角落是否在扇区内,你必须检查扇区的任何角落是否在矩形内,它会给你100%的准确度,但它是如此之慢。
有什么方法可以检查扇区和矩形的碰撞而不会产生荒谬的功能?
非常感谢你帮我解决这个问题,如果你需要的话,我会按照我的解释,制作一个真正的功能测试7分,我写的那个是在旅途中制作的