我必须计算2分的部分。我做了一个特殊的Point类,并定义了Point之间的操作。例如:如果x值较低,则点1小于点2。如果x值相等,我们将查看y值以找到最小值。
我还定义了一个具有2个属性的类线段,即点1和点2。点1总是最小的(如上定义)
然后是第三类,称为矩形,它也由2个点定义(因此,这2个点彼此成对角线)。它还具有2个属性,即点1和点2,以与类线段相同的方式定义。
现在我必须确定2个矩形之间的截面。
None
该部分也可以在下图中看到:
现在我不知道在没有疯狂的条件和陈述的情况下我该怎么做。有什么方法可以简化这个过程,并有一个总能正常工作的解决方案?矩形也可以在xy平面中的任何地方,因此它们也可以具有负坐标。
我已经拥有的代码可以在下面看到。我的练习是在荷兰语中进行的,因此变量中使用了一些荷兰语术语。我要在这里定义它们:
因此可以看出,我需要有关最后一个功能“ doorsnede”或“ section”的帮助。有谁知道如何有效解决这个问题?预先感谢!
class Punt:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __str__(self):
return f'Punt({self.x}, {self.y})'
def __repr__(self):
return str(self)
def __eq__(self, other):
return True if self.x == other.x and self.y == other.y else False
def __ne__(self, other):
return True if not self == other else False
def __lt__(self, other):
return self.x < other.x if self.x != other.x else self.y < other.y
def __le__(self, other):
return True if self < other or self == other else False
def __gt__(self, other):
return True if other < self else False
def __ge__(self, other):
return True if other < self or self == other else False
class Lijnstuk:
def __init__(self, p1, p2):
assert p1 != p2, 'lijnstuk moet lengte hebben die groter is dan nul'
self.punt1 = min(p1, p2)
self.punt2 = max(p1, p2)
def __str__(self):
return f'Lijnstuk(Punt({self.punt1.x}, {self.punt1.y}), Punt({self.punt2.x}, {self.punt2.y}))'
def __repr__(self):
return str(self)
def lengte(self):
return self.punt1.afstand(self.punt2)
class Rechthoek:
def __init__(self, p1, p2):
assert p1 != p2, 'rechthoek moet oppervlakte hebben die groter is dan nul'
self.punt1 = min(p1, p2)
self.punt2 = max(p1, p2)
def __str__(self):
return f'Rechthoek(Punt({self.punt1.x}, {self.punt1.y}), Punt({self.punt2.x}, {self.punt2.y}))'
def __repr__(self):
return str(self)
def oppervlakte(self):
return abs(self.punt2.x - self.punt1.x)*abs(self.punt2.y - self.punt1.y)
def doorsnede(self, other):