You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Manim及ManimCE中绘制圆上的等距点?是否有内置简便方法替代手动坐标输入?

Manim/ManimCE 绘制圆上等距点的简便方法

嘿,很高兴你问到这个!手动计算坐标确实能实现,但Manim(包括Community Edition)其实有更优雅的内置方式来搞定圆上的等距点,不用自己手动算三角函数,效率高多了。下面给你介绍两种常用的方法:

方法一:利用Circle的point_from_proportion方法

Circle类自带的point_from_proportion方法可以直接根据比例值返回圆上的对应点,完美适配等距点的需求。比例值范围是0到1,0对应圆的右顶点(默认起始角度为0,即x轴正方向),1则回到起点。

示例代码:

from manim import *

class CircleWithEquidistantPoints(Scene):
    def construct(self):
        # 创建一个半径为2的圆
        circle = Circle(radius=2)
        self.add(circle)
        
        # 设置需要的等距点数量
        num_points = 8
        
        # 遍历生成每个点
        for i in range(num_points):
            # 计算当前点的比例:i/num_points
            point = circle.point_from_proportion(i / num_points)
            # 用红点标记该点
            dot = Dot(point, color=RED, radius=0.08)
            self.add(dot)
            
            # 可选:给每个点添加序号标签
            label = Text(str(i+1), font_size=20).next_to(dot, RIGHT + UP, buff=0.1)
            self.add(label)

如果需要调整起始角度(比如从y轴正方向开始),可以直接旋转圆或者调整比例值:

  • 旋转圆:circle.rotate(PI/2),这样point_from_proportion(0)就会指向y轴正方向
  • 调整比例:把i/num_points改成(i/num_points) + 0.25(0.25对应四分之一圆周,即90度)

方法二:借助RegularPolygon获取顶点

正多边形的顶点本身就是其外接圆上的等距点,所以用RegularPolygon类可以直接拿到这些点,甚至可以同时显示多边形(不需要的话隐藏即可)。

示例代码:

from manim import *

class PolygonVerticesOnCircle(Scene):
    def construct(self):
        # 正六边形,对应6个等距点;radius参数设置外接圆半径
        num_sides = 6
        polygon = RegularPolygon(n=num_sides, radius=2, color=GREY)
        # 如果不需要显示多边形,注释掉下面这行
        self.add(polygon)
        
        # 获取所有顶点,这些点都在圆上且等距分布
        points = polygon.get_vertices()
        
        # 绘制每个点
        for idx, point in enumerate(points):
            dot = Dot(point, color=BLUE, radius=0.08)
            self.add(dot)
            # 可选:添加标签
            label = Text(str(idx+1), font_size=20).next_to(dot, DOWN + LEFT, buff=0.1)
            self.add(label)

同样,调整起始角度可以用start_angle参数,比如RegularPolygon(n=num_sides, radius=2, start_angle=PI/2),这样第一个顶点会从y轴正方向开始。

两种方法的适用场景

  • 如果你只需要圆上的点,两种方法都可以,看个人习惯;
  • 如果需要同时显示圆和点,用Circle的方法更直接;
  • 如果需要正多边形的边或者整体形状,RegularPolygon会更省心。

这样是不是比手动计算坐标方便太多了?试试这两种方法,根据你的需求选择就行~

内容的提问来源于stack exchange,提问作者Sophile

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 20:02:28