如何在Manim中绘制两个圆形之间的弯曲箭头
Manim社区版两圆形间绘制弯曲箭头解决方案
你的报错原因是CurvedArrow继承自ArcBetweenPoints,构造函数仅支持传入坐标点作为起止参数,没有像Line一样做Mobject适配,不能直接传入圆形对象。
所有Manim的可视化对象(Mobject)都内置了坐标获取方法:
- 调用
get_center()可获取对象中心点坐标 - 调用
get_right()/get_left()/get_top()/get_bottom()可直接获取对应方向的边缘点坐标 - 也可以调用
get_edge_center(方向向量)获取指定朝向的边缘坐标
修正后可正常运行的代码如下:
from manim import * class Curve1(Scene): def construct(self): c1 = Circle(radius=0.2, color=BLUE) c2 = Circle(radius=0.2, color=BLUE) group = Group(c1,c2).arrange(buff=1) self.add(group) # 取圆形边缘点作为起止点,避免箭头穿入圆形内部 curve = CurvedArrow( start_point=c1.get_right(), end_point=c2.get_left(), angle=TAU/8 # 调整弯曲弧度:正值向上弯,负值向下弯,默认值为TAU/4 ) self.add(curve)
你也可以根据需求修改angle、radius等参数,调整箭头的弯曲程度和样式。
内容的提问来源于stack exchange,提问作者user100464
相关产品推荐
相关产品推荐

