用Manim在图形和坐标轴上画线条

 用Manim在图形和坐标轴上画线条

.画图像函数的切线

angle_of_tangent(x, graph, dx=1e-08)

angle_of_tangent(x, graph, dx=1e-08)是 Manim 中用于计算图形在给定点的切线角度的函数。以下是对该函数参数的解释:

参数说明

  1. x:

    • 这是你想要计算切线角度的 x 坐标。在这个坐标处,函数会计算函数图形的切线。
  2. graph:

    • 这是一个函数图形对象,通常是通过 Axes 类的 plot 方法生成的。这个图形对象是你希望找出切线的曲线。
  3. dx (默认值为 1e-08):

    • 这是一个很小的数值,用于计算斜率。dx 在这里表示一个非常小的增量。通过在 x 的坐标上增加和减少 dx,可以通过有限差分法来计算在该点的导数(切线的斜率)。具体来说,它会使用公式:

slope=\frac{ f(x+dx)−f(x−dx)}{2⋅dx}

  • 这个方法可以有效地给出 x 处的斜率,从而帮助计算出切线的角度。

返回值

  • 该函数会计算并返回切线的角度,通常用弧度表示,可以在图形的画图和动画中使用,以展示切线在给定点的方向。

示例: 

from manim import *  
import numpy as np  

class ParabolaTangentWithAxes000(Scene):  
    def construct(self): 
        # 创建坐标轴  
        ax = Axes(  
            x_range=[-5, 5, 1],  
            y_range=[-1, 13, 1],  
            axis_config={"color": BLUE},  
        )  
        
        # 定义抛物线曲线  
        curve = ax.plot(lambda x: x**2, color=GREEN)  
        # 添加坐标轴和抛物线到场景中  
        self.add(ax, curve)   
        # 设置切线的 x 坐标  
### 使用Manim创建波浪动画效果 在Manim中,创建复杂的动画效果可以通过组合不同的类方法来实现。对于想要创建的波浪动画效果而言,可以利用`ParametricFunction`或者自定义曲线配合周期性的正弦或余弦函数来构建波浪形路径[^1]。 具体来说,为了生成一个简单的二维平面上的波浪线,可以采用如下方式: ```python from manim import * class WaveAnimation(Scene): def construct(self): # 定义波浪函数 wave_func = lambda t: np.array([t, np.sin(2*PI*t)+np.cos(4*PI*t)/2, 0]) # 创建基于上述函数的参数化图形对象 wave_curve = ParametricFunction(wave_func, t_range=[-2, 2], fill_opacity=0).set_color(BLUE) # 动态绘制该波浪线条的过程 self.play(Create(wave_curve)) self.wait() ``` 这段代码首先导入必要的库并定义了一个名为`WaveAnimation`的场景类。在这个类内部重写了`construct()`方法,在其中实现了波浪形状的具体逻辑。这里使用了lambda表达式定义了一条随时间`t`变化而形成的三维向量作为位置坐标;接着调用了`ParametricFunction`构造器传入此函数以及范围区间[-2, 2],从而得到一条连续变化的波浪状路径,并设置了其颜色为蓝色。最后通过`Create`动作命令让这条波浪线逐渐显现出来。 如果希望增加更多动态元素,比如使整个波浪沿水平方向移动,则可以在原有基础上进一步调整: ```python self.play( MoveAlongPath(Dot().scale(0.5),wave_curve), run_time=8, rate_func=linear ) ``` 这行新增加的部分将会使得一个小圆点沿着之前建立好的波浪轨迹匀速前进,增强了整体视觉上的流动感。 此外,还可以考虑加入更多的装饰性细节,例如应用前面提到过的`indication`中的某些特效(如`ShowPassingFlash`),以增强特定时刻的关注度,提高观众的理解效率[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yasen.M

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值