Ejemplo n.º 1
0
 def __init__(self, a=None, b=None):
     self.common_points = Deq(
     )  # Общие точки прямоугольника и выпуклой оболочки (Дек)
     self._common_perimeter = 0  # Общий периметр (так уж за одно посчитаем)
     self._common_area = 0  # Общая площадь - то, что нужно найти в задаче!
     # Указываем вершины прямоугольника
     self.set_verts(a, b)
Ejemplo n.º 2
0
 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))
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)