首页 > 其他分享 >用Manim实现——计算和绘制图形下方区域

用Manim实现——计算和绘制图形下方区域

时间:2024-08-04 19:24:34浏览次数:17  
标签:area color graph self ax 图形 绘制 Manim

用Manim实现——计算和绘制图形下方区域

get_area 函数

    get_area是一个用于计算和绘制图形下方区域的函数,常用于图形动画库(如 Manim)

get_area(graph, x_range=None, color=(ManimColor('#58C4DD'),
 ManimColor('#83C167')), opacity=0.3, bounded_graph=None, **kwargs)

它主要用于在特定图形(graph)下方填充颜色,以便可视化特定区间上方的面积。

参数解释

  1. graph: 要填充其下方区域的图形对象。通常是一个数学函数图形。

  2. x_range: 绘制区域的 x 范围。可以是一个元组,例如 (x_start, x_end),用于指定在哪个 x 轴范围内填充颜色。

  3. color: 这是一个包含两个颜色的元组,用于填充图形下方区域的渐变颜色。例子中使用了 ManimColor 类来为颜色提供支持。

  4. opacity: 确定填充颜色的不透明度,值通常在 0 到 1 之间,0 表示完全透明,1 表示完全不透明。

  5. bounded_graph: 可选参数,通常用于指定一个函数作图的下界。

  6. kwargs: 其他可选关键字参数,可以用于进一步自定义图形的属性或行为。

 示例1:

from manim import *  

class GetAreaExample012(Scene):  
    def construct(self):  
        ax = Axes().add_coordinates()  
        curve = ax.plot(lambda x: 2 * np.sin(x), color=DARK_BLUE)  
        sin_x = Text("sin(x)", color=RED).scale(1).next_to(curve, UP+3*RIGHT, -0.4)
        # 计算面积区域  
        area = ax.get_area(  
            curve,  
            x_range=(PI / 2, 3 * PI / 2),  
            color=(GREEN_A, GREEN_E),  
            opacity=1,  
        )  

        self.add(ax, curve, area,sin_x)  

        # 在面积上方添加圆圈及“+”  
        plus_circle = Circle(radius=0.2, color=WHITE).shift(ax.c2p(2*PI/3, 1))  # 调整位置  
        plus_text = Text("+", color=RED).scale(0.65).move_to(plus_circle.get_center())  

        # 在面积下方添加圆圈及“-”  
        minus_circle = Circle(radius=0.2, color=WHITE).shift(ax.c2p(1+PI ,-1)) # 调整位置  
        minus_text = Text("-", color=YELLOW).scale(1.52).move_to(minus_circle.get_center())  

        # 添加圆圈和文本  
        self.add(plus_circle, plus_text, minus_circle, minus_text)  

 运行结果:

 示例2:

from manim import *  

class AreaUnderGraph011(Scene):  
    def construct(self):  
        # 创建一个正弦函数  
        graph = FunctionGraph(np.sin, x_range=[-3, 3], color=BLUE)  
        ax = Axes().add_coordinates()
        # 获取图形下方区域  
        area = ax.get_area(  
            graph,  
            x_range=[0, PI],  
            color=(ManimColor('#58C4DD'), ManimColor('#83C167')),  
            opacity=0.5  
        )  

        # 添加图形和填充区域到场景中  
        self.add(ax,graph, area)  

        # 动画效果  
        self.play(Create(graph), FadeIn(area))  
        self.wait(2)  

运行结果:

示例3: 

from manim import *  
import numpy as np  

class AreaUnderCustomGraph003(Scene):  
    def construct(self):  
        # 定义自定义函数 f(x)  
        def f(x):  
            return np.exp(-x**2)  # 例如高斯函数  

        # 创建函数图形  
        graph = FunctionGraph(f, x_range=[-3, 3], color=YELLOW) 
        
        ax = Axes().add_coordinates()
        # 获取图形下方区域  
        area = ax.get_area(  
            graph,  
            x_range=[-3, 3],
            color=BLUE,  
            opacity=0.5,  
            stroke_width=0  
        )  

        # 添加图形和填充区域到场景中  
        self.add(ax,graph, area)  

        # 动画效果  
        self.play(Create(graph), FadeIn(area))  
        self.wait(2)  

运行结果: 

标签:area,color,graph,self,ax,图形,绘制,Manim
From: https://blog.csdn.net/qq_45449625/article/details/140909994

相关文章

  • Manim系列——创建并使用坐标系统
    到目前为止,我们一直在研究表单的功能具有一个自变量和一个因变量。这些函数可以在二维空间中表示,使用两个数值轴,使我们能够用两个数字识别平面中的每个点。我们现在想谈谈三维空间;为了识别三维空间中的每个点,我们需要三个数值。建立这种关联的明显方法是添加一个新轴,垂直于和......
  • WebGL拖动控制点绘制贝塞尔曲线——以三次贝塞尔曲线为例
    为了实现该功能,这里将功能分成两部分。第一部分是控制点的拖动功能,第二部分是贝塞尔曲线的绘制功能。控制点的拖动功能:鼠标按下选择点->鼠标移动修改点->鼠标松开释放点。选择点通过发生mousedown事件后遍历控制点数组,判断点击的位置是否和某个点的距离小于一定值,选择第一个满......
  • Python Matplotlib Quiver 绘制向量场
    我正在尝试使用Matplotlib的quiver函数绘制引力矢量场,我有一个函数可以计算由任意数量的质量引起的引力场,但是在绘制它时,我在质量位置周围得到了奇怪的结果。出于矢量绘图的目的,该函数返回x和y方向上的场分量、它们的x和y坐标以及2D场数组,这对于绘图不是必需的,但对......
  • 用Python打造精彩动画与视频, 6.2 使用Manim进行数学和科学可视化
     6.2使用Manim进行数学和科学可视化Manim(MathematicalAnimationEngine)是一款强大的动画制作工具,尤其适用于数学和科学领域的可视化。它由3Blue1Brown的GrantSanderson开发,旨在通过动画演示复杂的数学概念,使其更易于理解。使用Manim,用户可以创建高质量的数学动画,从简单的......
  • 用Python打造精彩动画与视频,5.3 使用Manim创建简单动画
     5.3使用Manim创建简单动画在这一节中,我们将介绍如何使用Manim创建简单的动画。我们将从基本的场景构建开始,然后演示如何添加动画效果。通过这些示例,你将能够掌握使用Manim创建各种动画的基本技能。5.3.1创建一个简单的场景Manim中的基本单元是场景(Scene)。每个场景都是一......
  • 用Python打造精彩动画与视频, 5.2 安装和设置Manim
     5.2安装和设置ManimManim是一个强大的动画库,用于创建高质量的数学动画。它最初由3Blue1Brown的GrantSanderson开发,并被广泛用于教育和展示。以下是安装和设置Manim的详细步骤。5.2.1安装ManimManim需要Python环境和一些依赖库。在安装Manim之前,请确保已经......
  • 前端必知必会-HTMLCanvas图形
    文章目录HTMLCanvas图形添加JavaScript绘制一条线绘制一个圆圈绘制一个文本描边文本绘制线性渐变绘制圆形渐变绘制图像总结HTMLCanvas图形HTML<canvas>元素用于在网页上绘制图形。什么是HTMLCanvas?HTML<canvas>元素用于通过JavaScript动态绘制图形......
  • 打卡信奥刷题(494)用Scratch图形化工具信奥P1420[普及组/提高] 最长连号
    最长连号题目描述输入长度为nnn的一个正整数序列,要求输出序列中最长连号的长度。连号指在序列中,从小到大的连续自然数。输入格式第一行,一个整数......
  • m3u8下载工具N_m3u8DL-CLI的图形界面增强版
    摘自:https://zhuanlan.zhihu.com/p/672615148 简介(仅windows)N_m3u8DL-CLI是个非常方便的开源免费m3u8下载工具,自带一个叫SimpleGUI的简单图形界面。但是这个图形界面工具,太过简单,连任务列表都没有。所以,这里二次开发,增加了任务列表功能。新增的所有功能,请在项目页面查看详......
  • Python的GDAL库绘制多波段、长时序遥感影像时间曲线图
      本文介绍基于Python中的gdal模块,对大量长时间序列的栅格遥感影像文件,绘制其每一个波段中、若干随机指定的像元的时间序列曲线图的方法。  在之前的文章中,我们就已经介绍过基于gdal模块,对大量多时相栅格图像,批量绘制像元时间序列折线图的方法。不过当时文章中的需求,每1个时......