我想创建一组不重叠的非轴对齐的矩形,并且通过非轴对齐,我的意思是矩形可以相对于x轴和y轴倾斜。如何创建非重叠的非轴对齐的矩形?
我知道怎么样detect whether two aligned rectangles overlap但是不知道怎样做不等于矩形。希望有人能帮我找到一个有效的算法。
我想创建一组不重叠的非轴对齐的矩形,并且通过非轴对齐,我的意思是矩形可以相对于x轴和y轴倾斜。如何创建非重叠的非轴对齐的矩形?
我知道怎么样detect whether two aligned rectangles overlap但是不知道怎样做不等于矩形。希望有人能帮我找到一个有效的算法。
第一部分可以与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')
进行第二部分是更复杂一些。 我开始通过旋转两个矩形,直到一个(称为主矩形)与您的xy轴(https://en.wikipedia.org/wiki/Rotation_matrix)
然后,您可以检查另一个矩形的任何角落是否在第一个通过查看它的x坐标是否位于主矩形的x坐标之间,并使用y坐标重复执行
感谢上述答案。我在这个网站上找到了另一个非常有效的算法https://math.stackexchange.com/questions/190111/how-to-check-if-a-point-is-inside-a-rectangle。请参阅第二高的答案。这非常棒。