Exemplo n.º 1
0
    def add_tips(self):
        linea_referencia = Line(self[0][0].get_start(), self[0][-1].get_end())
        vector_unitario = linea_referencia.get_unit_vector()

        punto_final1 = self[0][-1].get_end()
        punto_inicial1 = punto_final1 - vector_unitario * self.size_arrows

        punto_inicial2 = self[0][0].get_start()
        punto_final2 = punto_inicial2 + vector_unitario * self.size_arrows

        lin1_1 = Line(punto_inicial1,
                      punto_final1).set_color(self[0].get_color()).set_stroke(
                          None, self.stroke)
        lin1_2 = lin1_1.copy()
        lin2_1 = Line(punto_inicial2,
                      punto_final2).set_color(self[0].get_color()).set_stroke(
                          None, self.stroke)
        lin2_2 = lin2_1.copy()

        lin1_1.rotate(self.ang_arrows,
                      about_point=punto_final1,
                      about_edge=punto_final1)
        lin1_2.rotate(-self.ang_arrows,
                      about_point=punto_final1,
                      about_edge=punto_final1)

        lin2_1.rotate(self.ang_arrows,
                      about_point=punto_inicial2,
                      about_edge=punto_inicial2)
        lin2_2.rotate(-self.ang_arrows,
                      about_point=punto_inicial2,
                      about_edge=punto_inicial2)

        return self.add(lin1_1, lin1_2, lin2_1, lin2_2)
Exemplo n.º 2
0
    def __init__(self, text, texmob=None, **kwargs):

        digest_config(self, kwargs)
        VGroup.__init__(self, **kwargs)

        pre_coord_dl = text.get_corner(DL)
        pre_coord_ur = text.get_corner(UR)
        reference_line = Line(pre_coord_dl, pre_coord_ur)
        reference_unit_vector = reference_line.get_unit_vector()
        coord_dl = text.get_corner(
            DL) - text.get_center() - reference_unit_vector * self.buff_line
        coord_ur = text.get_corner(
            UR) - text.get_center() + reference_unit_vector * self.buff_line
        if texmob == None:
            line = Line(coord_dl, coord_ur, **self.line_kwargs)
            self.add(line)
        else:
            arrow = Arrow(coord_dl, coord_ur, **self.line_kwargs)
            unit_vector = arrow.get_unit_vector()
            if self.buff_text == None:
                self.buff_text = get_norm(
                    (texmob.get_center() -
                     texmob.get_critical_point(unit_vector)) / 2) * 2
            texmob.move_to(arrow.get_end() + unit_vector * self.buff_text)
            self.add(arrow, texmob)
Exemplo n.º 3
0
 def __init__(self, path, partitions=120, **kwargs):
     VMobject.__init__(self, **kwargs)
     coords = []
     for p in range(int(partitions) + 1):
         coord_i = path.point_from_proportion((p * 0.989 / partitions) % 1)
         coord_f = path.point_from_proportion(
             (p * 0.989 / partitions + 0.001) % 1)
         reference_line = Line(coord_i, coord_f).rotate(self.sign * PI / 2,
                                                        about_point=coord_i)
         normal_unit_vector = reference_line.get_unit_vector()
         static_vector = normal_unit_vector * self.length
         random_dx = random.randint(0, self.dx_random)
         random_normal_vector = random_dx * normal_unit_vector / 100
         point_coord = coord_i + random_normal_vector + static_vector
         coords.append(point_coord)
     if self.close:
         coords.append(coords[0])
     self.set_points_smoothly(coords)