我正在尝试创建一组非重叠的非轴对齐矩形,并且通过非轴对齐的方式,矩形可以相对于x轴和y轴倾斜。
我知道如何detect whether two aligned rectangles overlap但不知道如何为非对齐矩形做同样的事情。希望有人可以帮我找到一个有效的算法。
答案 0 :(得分:0)
第一部分可以使用matplotlib
完成import matplotlib.pyplot as plt
xy1= [1,0]
xy2= [0,1]
xy3= [1,2]
xy4= [2,1]
def pltRect(xy1,xy2,xy3,xy4):
plt.plot([xy1[0],xy2[0]],[xy1[1],xy2[1]],'-b')
plt.plot([xy2[0],xy3[0]],[xy2[1],xy3[1]],'-b')
plt.plot([xy3[0],xy4[0]],[xy3[1],xy4[1]],'-b')
plt.plot([xy4[0],xy1[0]],[xy4[1],xy1[1]],'-b')
第二部分有点复杂。 我首先旋转两个矩形直到一个(称之为主矩形)与x-y轴(https://en.wikipedia.org/wiki/Rotation_matrix)对齐
然后你可以看看另一个矩形的任何一个角是否在第一个矩形的范围内,看它的坐标是否在主矩形的x坐标之间,并且用y坐标重复
答案 1 :(得分:0)
感谢您的上述回答。我在这个网站上找到了另一种非常有效的算法https://math.stackexchange.com/questions/190111/how-to-check-if-a-point-is-inside-a-rectangle。请参考第二个最高答案。它非常棒。