比较麻烦的是怎么判断四边形的形状,如果与坐标不平行,就得计算出所有边长以及角度再比较了
from pygame import Rect
class Rectangle():
num = 0
def __init__(self, topleft, topright, bottomright, bottomleft):
self.tl = topleft
self.tr = topright
self.br = bottomright
self.bl = bottomleft
Rectangle.num += 1
def gettype(self):
top = (self.tr[1]-self.tl[1])**2 + (self.tr[0]-self.tl[0])**2
right = (self.tr[1]-self.br[1])**2 + (self.tr[0]-self.br[0])**2
bottom = (self.br[1]-self.bl[1])**2 + (self.br[0]-self.bl[0])**2
left = (self.tl[1]-self.bl[1])**2 + (self.tl[0]-self.bl[0])**2
top_bottom = (self.tr[1]-self.tl[1])*(self.br[0]-self.bl[0])==(self.br[1]-self.bl[1])*(self.tr[0]-self.tl[0])
left_right = (self.tr[1]-self.br[1])*(self.tl[0]-self.bl[0])==(self.tr[0]-self.br[0])*(self.tl[1]-self.bl[1])
parallel = top_bottom+left_right
if parallel == 2:
diagonal = (self.tr[1]-self.bl[1])**2 + (self.tr[0]-self.bl[0])**2
if bottom + right == diagonal:
if top == left:
print('正方形')
else:
print('长方形')
else:
print('平行四边形')
elif parallel == 1:
print('梯形')
else:
print('其他')
a = Rectangle((0,0),(0,2),(4,2),(4,0))
a.gettype()