利用Manim库结合`matplotlib`、`numpy`和`scipy`来制作工作流程动画

以下是一个利用Manim库结合matplotlibnumpyscipy来制作工作流程动画,展示流场速度分布计算模型,以及三流喷嘴的速度场和主要参数分布的可视化图形与动画的示例代码。这个示例将模拟一个简化的三流喷嘴速度场,通过计算速度分布并将其可视化。

思路概述

  1. 速度场计算:使用numpyscipy来计算三流喷嘴的速度场。
  2. 可视化:使用matplotlib创建速度场和主要参数分布的图形。
  3. 动画制作:使用Manim库将上述图形和工作流程制作成动画。

代码实现

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
from manim import *# 定义速度场计算函数
def calculate_velocity_field():# 定义三流喷嘴的参数x = np.linspace(-5, 5, 100)y = np.linspace(-5, 5, 100)X, Y = np.meshgrid(x, y)# 简化的速度场模型U = -Y / (X**2 + Y**2 + 1)V = X / (X**2 + Y**2 + 1)return X, Y, U, V# 创建速度场可视化图形
def create_velocity_field_plot():X, Y, U, V = calculate_velocity_field()fig, ax = plt.subplots()ax.streamplot(X, Y, U, V, density=1.5)ax.set_title('Velocity Field of Three - Stream Nozzle')ax.set_xlabel('X')ax.set_ylabel('Y')fig.canvas.draw()image = np.frombuffer(fig.canvas.tostring_rgb(), dtype=np.uint8)image = image.reshape(fig.canvas.get_width_height()[::-1] + (3,))plt.close(fig)return imageclass FlowFieldAnimation(Scene):def construct(self):# 展示工作流程标题title = Text("Flow Field Velocity Distribution Calculation Model")self.play(Write(title))self.wait(2)self.play(FadeOut(title))# 计算并展示速度场图形velocity_field_image = create_velocity_field_plot()image_mobject = ImageMobject(velocity_field_image)image_mobject.scale(2)self.play(FadeIn(image_mobject))self.wait(3)# 展示主要参数分布(这里简化为添加一个文本说明)parameter_text = Text("Main Parameter Distribution: Simplified Example")parameter_text.next_to(image_mobject, DOWN)self.play(Write(parameter_text))self.wait(3)# 动画结束self.play(FadeOut(image_mobject), FadeOut(parameter_text))self.wait(1)

代码解释

  1. 速度场计算calculate_velocity_field函数使用numpy生成网格点,并定义一个简化的速度场模型。
  2. 可视化create_velocity_field_plot函数使用matplotlib创建速度场的流线图,并将其转换为numpy数组。
  3. 动画制作FlowFieldAnimation类继承自Scene,使用Manim库创建动画。首先展示工作流程标题,然后展示速度场图形,最后添加主要参数分布的文本说明。

运行代码

将上述代码保存为一个Python文件(例如flow_field_animation.py),然后在终端中运行以下命令:

manim -pql flow_field_animation.py FlowFieldAnimation

其中,-p表示播放动画,-ql表示以低质量渲染动画。

请注意,这个示例中的速度场模型是简化的,实际应用中可能需要根据具体的物理模型进行修改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/69775.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

origin调整图像的坐标轴,修改坐标轴起始点,增量

接上一篇帖子,如果再修改数据之后或者当前的数据之间差距较小,怎么通过调整坐标轴来使数据之间的差距更明显,举个例子, 像下面这个图的entropy指标,都是介于6到9之间,如果y轴坐标都从0开始,使用…

Redis_Redission的入门案例、多主案例搭建、分布式锁进行加锁、解锁底层源码解析

目录 ①. Redis为什么选择单线程? ②. 既然单线程这么好,为什么逐渐又加入了多线程特性? ③. redis6的多线程和IO多路复用入门篇 ④. Redis6.0默认是否开启了多线程? ⑤. REDIS多线程引入总结 ①. Redis为什么选择单线程? ①…

集合的奇妙世界:Python集合的经典、避坑与实战

集合的奇妙世界:Python集合的经典、避坑与实战 内容简介 本系列文章是为 Python3 学习者精心设计的一套全面、实用的学习指南,旨在帮助读者从基础入门到项目实战,全面提升编程能力。文章结构由 5 个版块组成,内容层层递进&#x…

2025年1月个人工作生活总结

本文为 2025年1月工作生活总结。 研发编码 使用sqlite3命令行查询表数据 可以直接使用sqlite3查询数据表,不需进入命令行模式。示例如下: sqlite3 database_name.db "SELECT * FROM table_name;"linux shell使用read超时一例 先前有个编译…

ARM嵌入式学习--第十一天(中断处理 , ADC)

--中断的概念 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回被暂停的程序继续运行 --CPU处理事情的方式 -轮询方式 不断查询是否有事情需要处理&#xff0c…

android Camera 的进化

引言 Android 的camera 发展经历了3个阶段 : camera1 -》camera2 -》cameraX。 正文 Camera1 Camera1 的开发中,打开相机,设置参数的过程是同步的,就跟用户实际使用camera的操作步骤一样。但是如果有耗时情况发生时,会…

JavaScript原型链与继承:优化与扩展的深度探索

在 JavaScript 的世界里,万物皆对象,而每个对象都有一个与之关联的原型对象,这就构成了原型链的基础。原型链,简单来说,是一个由对象的原型相互连接形成的链式结构 。每个对象都有一个内部属性[[Prototype]]&#xff0…

vue2项目(一)

项目介绍 电商前台项目 技术架构:vuewebpackvuexvue-routeraxiosless.. 封装通用组件登录注册token购物车支付项目性能优化 一、项目初始化 使用vue create projrct_vue2在命令行窗口创建项目 1.1、脚手架目录介绍 ├── node_modules:放置项目的依赖 ├──…

分层多维度应急管理系统的设计

一、系统总体架构设计 1. 六层体系架构 #mermaid-svg-QOXtM1MnbrwUopPb {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QOXtM1MnbrwUopPb .error-icon{fill:#552222;}#mermaid-svg-QOXtM1MnbrwUopPb .error-text{f…

350.两个数组的交集 ②

目录 题目过程解法 题目 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑…

sublime_text的快捷键

sublime_text的快捷键 向下复制, 复制光标所在整行并插入到下一行:通过 CtrlShiftD 实现快速复制当前行的功能。 可选多行, 不选则复制当前行 ctrl Shift D 删除当前行:通过 CtrlShiftK 实现快速删除当前行的功能。 可选多行, 不选则删当前行 ctrl S…

[ACTF2020 新生赛]BackupFile1

题目 翻译&#xff0c;尝试找出源文件&#xff01; 扫目录使用参数-e * python dirsearch.py -u http://0c3b21c0-d360-4baa-8b97-aa244f4c4825.node5.buuoj.cn:81/ -e * 最终扫描到一个文件名为&#xff1a;/index.php.bak的文件&#xff0c;把备份文件下载下来 源码 <?…

OPENPPP2 —— VMUX_NET 多路复用原理剖析

在阅读本文之前&#xff0c;必先了解以下几个概念&#xff1a; 1、MUX&#xff08;Multiplexer&#xff09;&#xff1a;合并多个信号到单一通道。 2、DEMUX&#xff08;Demultiplexer&#xff09;&#xff1a;从单一通道分离出多个信号。 3、单一通道&#xff0c;可汇聚多个…

DeepSeek-R1大模型本地部署及简单测试

目录 DeepSeek-R1大模型本地部署及简单测试背景我的测试环境模型参数选择适用场景参数规模 本地部署安装 DeepSeek-R1大模型本地部署及简单测试 背景 最近deepseek非常火, 要说2025年震惊科技圈的事件要数DeepSeek这个国产AI的横空出世&#xff0c;这是一款免费、开源且隐私优…

C# 数组和列表的基本知识及 LINQ 查询

数组和列表的基本知识及 LINQ 查询 一、基本知识二、引用命名空间声明三、数组3.1、一维数组3.2、二维数组3.3、不规则数组 Jagged Array 四、列表 List4.1、一维列表4.2、二维列表 五、数组和列表使用 LINQ的操作和运算5.1、一维 LIST 删除所有含 double.NaN 的行5.2、一维 LI…

C++计算给定序列在多次修改前后满足特定条件的极大匹配方案的大小

给定长度为n的整数序列 a 1 , a 2 , . . . , a n a_1,a_2,...,a_n a1​,a2​,...,an​和长度为n的01序列 b 1 , b 2 , . . . , b n b_1,b_2,...,b_n b1​,b2​,...,bn​。 对于 1 ≤ i < j ≤ n 1\leq i<j\leq n 1≤i<j≤n&#xff0c;称二元组 ( i , j ) (i,j) (i,j)…

强化学习笔记(3)——基于值函数的方法和策略梯度方法

分为两大类方法&#xff1a; 基于值函数的方法&#xff08;Temporal Difference Methods, TD Methods&#xff09; 策略梯度方法&#xff08;Policy Gradient Methods&#xff09;。 二者不同之处&#xff1a; 通过值函数来间接表达隐式的策略&#xff0c;一个是直接迭代优化策…

柱量最大值转向

• 在MACD指标中&#xff0c;柱状线在0轴之上时用红色柱线表示&#xff0c;简称为“红柱”。 • 在上涨过程中&#xff0c;柱状线会在0轴之上不断向上发散&#xff0c;这是由于快线DIF带动慢线DEA向上运行&#xff0c;并且DIF不断远离DEA。 2. 上涨动能的变化&#xff1a;…

Excel 技巧23 - 在Excel中用切片器做出查询效果(★★★)

本文讲如何在Excel中用切片器做出查询效果。 目录 1&#xff0c;在Excel中用切片器做出查询效果 1-1&#xff0c;Excel 中的切片器是什么&#xff1f; 1-2&#xff0c;用切片器做出查询效果 1&#xff09;&#xff0c;点击任一表格内单元格&#xff0c;按下CtrlA&#xff0…

Java 性能优化与新特性

Java学习资料 Java学习资料 Java学习资料 一、引言 Java 作为一门广泛应用于企业级开发、移动应用、大数据等多个领域的编程语言&#xff0c;其性能和特性一直是开发者关注的重点。随着软件系统的规模和复杂度不断增加&#xff0c;对 Java 程序性能的要求也越来越高。同时&a…