예제 #1
0
    def rota(self, p:Punto2D, angulo:float) -> Poligono2D:
        return Poligono2D.of([x.rota(p,angulo) for x in self.vertices])

    def traslada(self, v:Vector2D) -> Poligono2D:
        return Poligono2D.of([x.traslada(v) for x in self.vertices])
    
    def homotecia(self, p:Punto2D, factor:float) -> Poligono2D:
        return Poligono2D.of([x.homotecia(p,factor) for x in self.vertices])
        
    def proyecta_sobre_recta(self,r:Recta2D) -> set[Punto2D]:
        return Poligono2D.of([x.proyecta_sobre_recta(r) for x in self.vertices])
    
    def simetrico_con_respecto_a_recta(self, r:Recta2D) -> Poligono2D:
        return Poligono2D.of([x.simetrico_con_respecto_a_recta(r) for x in self.vertices])
    
    @property
    def shape(self)->Patch:
        return Draw.shape_multiline([[p.x,p.y] for p in self.vertices],closed=True)


if __name__ == '__main__':
    v = Vector2D.of(1., 0.)
    pol = Poligono2D.cuadrado(Punto2D.origen(),v)
    print(pol)
    print(pol.area)
    print(pol.perimetro)
    print(pol.rota(Punto2D.of(1.,1.), pi/2))
    r = Poligono2D.rectangulo(Punto2D.of(1.,1.),v,2.)
    print(r)
    print("{0:.2f}".format(r.area))
    
예제 #2
0
    vector: Vector2D

    @staticmethod
    def of(p: Punto2D, v: Vector2D) -> Recta2D:
        return Recta2D(p, v)

    @staticmethod
    def of_puntos(p1: Punto2D, p2: Punto2D) -> Recta2D:
        return Recta2D(p1, p2.vector_to(p1))

    def __str__(self) -> str:
        return '({0},{1})'.format(str(self.punto), str(self.vector))

    def punto_en_recta(self, factor: float = 0.) -> Punto2D:
        return self.punto + self.vector * factor

    def paralela(self, p: Punto2D) -> Recta2D:
        return Recta2D.of(p, self.vector)

    def ortogonal(self, p: Punto2D) -> Recta2D:
        return Recta2D.of(p, self.vector.ortogonal)


if __name__ == '__main__':
    p1 = Punto2D.origen()
    p2 = Punto2D.of(0., 1.)
    r = Recta2D.of_puntos(p1, p2)
    print(r)
    p3 = Punto2D.of(1.0, 7.0)
    print(p3.proyecta_sobre_recta(r))
    print(p3.simetrico_con_respecto_a_recta(r))