如果您检查 manimlib / mobject.py 库或 vector_mobject 库,您会发现没有类似的。让 manim 如此酷的一件事是,如果某事无法完成,您可以自己完成。我建议不要问,如果你没有找到方法,你自己创建它(就像插值一样)。通过这种方式,您将了解更多信息并开发自己的代码,而无需依赖于您能做什么或不能做什么。
class Polygon(Polygon):
def get_center_of_edges(self,buff=SMALL_BUFF*3):
vertices = self.get_vertices()
coords_vertices = []
for i in range(len(vertices)):
if i < len(vertices)-1:
p1,p2 = [vertices[i],vertices[i+1]]
else:
p1,p2 = [vertices[-1],vertices[0]]
guide_line = Line(p1,p2)
side = guide_line.get_center()
normal_direction = guide_line.copy()
normal_direction.rotate(-PI/2)
vector_normal_direction = normal_direction.get_unit_vector()
direction = Dot(side).shift(vector_normal_direction*buff).get_center()
coords_vertices.append(direction)
return coords_vertices
class PolygonScene(Scene):
def construct(self):
tri1 = Polygon(LEFT*1.5+UP, RIGHT*1.5+UP, RIGHT*1.5+UP*1.5)
center_vertices =tri1.get_center_of_edges()
labels = VGroup(*[
TexMobject(label).move_to(point) for label,point in zip(["a","b","c"],center_vertices)
])
self.add(tri1,labels)
class RegularPolygon(RegularPolygon):
def get_center_of_edges(self,buff=SMALL_BUFF*3):
vertices = self.get_vertices()
coords_vertices = []
for i in range(len(vertices)):
if i < len(vertices)-1:
p1,p2 = [vertices[i],vertices[i+1]]
else:
p1,p2 = [vertices[-1],vertices[0]]
guide_line = Line(p1,p2)
side = guide_line.get_center()
normal_direction = guide_line.copy()
normal_direction.rotate(-PI/2)
vector_normal_direction = normal_direction.get_unit_vector()
direction = Dot(side).shift(vector_normal_direction*buff).get_center()
coords_vertices.append(direction)
return coords_vertices
class PolygonScene2(Scene):
def construct(self):
tri1 = RegularPolygon(6).scale(2.5)
center_vertices =tri1.get_center_of_edges()
labels = ["a","b","c","d","e","f"]
labels = VGroup(*[
TexMobject(label).move_to(point) for label,point in zip(labels,center_vertices)
])
self.add(tri1,labels)