def __init__(self, a=None, b=None): self.common_points = Deq( ) # Общие точки прямоугольника и выпуклой оболочки (Дек) self._common_perimeter = 0 # Общий периметр (так уж за одно посчитаем) self._common_area = 0 # Общая площадь - то, что нужно найти в задаче! # Указываем вершины прямоугольника self.set_verts(a, b)
def __init__(self, a, b, c): self.points = Deq() self.points.push_first(b) if b.is_light(a, c): self.points.push_first(a) self.points.push_last(c) else: self.points.push_last(a) self.points.push_first(c) self._perimeter = a.dist(b) + b.dist(c) + c.dist(a) self._area = abs(R2Point.area(a, b, c))
def __init__(self, a, b, c): self.points = Deq() self.points.push_first(b) if b.is_light(a, c): self.points.push_first(a) self.points.push_last(c) else: self.points.push_last(a) self.points.push_first(c) self._perimeter = a.dist(b) + b.dist(c) + c.dist(a) self._area = abs(R2Point.area(a, b, c)) # подсчет велины g которая включает сумму искомых нами сегментов self._g = support.lenght(a, b) + support.lenght(b, c) \ + support.lenght(c, a)
def __init__(self, a, b, c): self.points = Deq() self.points.push_first(b) if b.is_light(a, c): self.points.push_first(a) self.points.push_last(c) else: self.points.push_last(a) self.points.push_first(c) self._perimeter = a.dist(b) + b.dist(c) + c.dist(a) self._area = abs(R2Point.area(a, b, c)) self._g = a.dist(self.fixed_point) + b.dist(self.fixed_point) + \ c.dist(self.fixed_point) self.rectangle.add_crossing( b, c) # Проверяем, пересекает ли отрезок какую-либо из граней self.rectangle.add_crossing( b, a) # Проверяем, пересекает ли отрезок какую-либо из граней self.rectangle.add_crossing( a, c) # Проверяем, пересекает ли отрезок какую-либо из граней # Добавляем в Дек вершины прямоугольника, которые находятся внутри выпуклой оболочки, # чтобы корректно считать площадь, если НЕТ пересечения self.rectangle.add_inside(a, b, c)