python3d动图_如何在Python上制作3D图形的动画
我正在寻找动画我的图形(下面)和我不确定从何处或如何开始,因为我没有动画经验。我不知道它是如何工作的,也不知道代码的结构应该是什么,所以如果有人能提供一个伪代码或一个算法,我将非常感激。我也提供了我用来绘制下图的代码。在enter code here
from scipy.integrate import odeint
import scipy as sci
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as ani
# Universal Gravitational Const.
G = 6.674e-11
# Defining Mass
m1 = 2
m2 = 3.5
m3 = 2.3
# Init positions in graph (array)
pos1 = [-5,0,1]
pos2 = [5,0,10]
pos3 = [0,1,3]
p01 = np.array(pos1)
p02 = np.array(pos2)
p03 = np.array(pos3)
# Init velocities (array)
vi1 = [1,0.01,0]
vi2 = [-5,0,1]
vi3 = [0,-1,0]
v01 = np.array(vi1)
v02 = np.array(vi2)
v03 = np.array(vi3)
#Function
def derivs_func(y,t,G,m1,m2,m3):
d1 = y[:3]
d2 = y[3:6]
d3 = y[6:9]
v1 = y[9:12]
v2 = y[12:15]
v3 = y[15:18]
dist12 = np.sqrt((pos2[0]-pos1[0])**2 + (pos2[1]-pos1[1])**2 + (pos2[2]-pos1[2])**2)
dist13 = np.sqrt((pos3[0]-pos1[0])**2 + (pos3[1]-pos1[1])**2 + (pos3[2]-pos1[2])**2)
dist23 = np.sqrt((pos3[0]-pos2[0])**2 + (pos3[1]-pos2[1])**2 + (pos3[2]-pos2[2])**2)
dv1dt = m2 * (d2-d1)/dist12**3 + m3 * (d3-d1)/dist13**3
dv2dt = m1 * (d1-d2)/dist12**3 + m3 * (d3-d2)/dist23**3
dv3dt = m1 * (d1-d3)/dist13**3 + m2 * (d2-d3)/dist23**3
dd1dt = v1
dd2dt = v2
dd3dt = v3
derivs = np.array([dd1dt,dd2dt,dd3dt,dv1dt,dv2dt,dv3dt])
derivs3 = derivs.flatten()
return derivs3
yo = np.array([p01, p02, p03, v01, v02, v03])
y0 = yo.flatten()
time = np.linspace(0,200,500)
sol = odeint(derivs_func, y0, time, args = (G,m1,m2,m3))
x1 = sol[:,:3]
x2 = sol[:,3:6]
x3 = sol[:,6:9]
fig = plt.figure(figsize = (15,15))
ax = fig.add_subplot(111,projection = '3d')
ax.plot(x1[:,0],x1[:,1],x1[:,2],color = 'b')
ax.plot(x2[:,0],x2[:,1],x2[:,2],color = 'm')
ax.plot(x3[:,0],x3[:,1],x3[:,2],color = 'g')
ax.scatter(x1[-1,0],x1[-1,1],x1[-1,2],color = 'b', marker = 'o', s=30, label = 'Mass 1')
ax.scatter(x2[-1,0],x2[-1,1],x2[-1,2],color = 'm', marker = 'o',s=90, label = 'Mass 2')
ax.scatter(x3[-1,0],x3[-1,1],x3[-1,2],color = 'g', marker = 'o',s=60, label = 'Mass 3')
ax.legend()
python3d动图_如何在Python上制作3D图形的动画相关推荐
- python制作3d相册_如何在Python中制作3D图?
这是3D绘图代码的MATLAB版本: 编辑: 这是当前的代码: plt.figure(2) fig_b = Axes3D(fig2) xx2 = np.arange(0, L+h_grid*L, h_ ...
- python三维图视角旋转_如何在python中旋转3d图? (或作为动画)使用鼠标旋转三维视图...
我有这段代码,其中包含一个3D图.我在Spyder中运行代码;我想知道是否可以使这个绘图旋转(360度)并保存. 谢谢! P.s.对不起,如果这是一个愚蠢的问题,但我是Python的newby.如何在 ...
- python制作gif动图_怎样用Python制作好玩的GIF动图
原标题:怎样用Python制作好玩的GIF动图 作者: 景略集智 https://jizhi.im/blog/post/pytogif 程序员共读整理发布,转载请联系作者获得授权 之前我们分享过用Py ...
- python并行处理for循环_如何在python上并行处理此嵌套循环
我正在尝试减少名称列表,并且为了执行此操作,我使用了fuzzywuzzy图书馆. 我对所有名称执行两个for循环.如果两个名称的匹配分数在90到100之间,则我用第一个名字重写了第二个名字. 这是我的 ...
- 影之诗闪卡动图_影之诗怎么制作闪卡_闪卡的制作方法_软吧
影之诗怎么制作闪卡呢?闪卡由于具有动态效果而受到很多玩家的欢迎.但是闪卡的制作流程也是蛮麻烦的.下面就让小易为大家带来影之诗闪卡的制作方法,感兴趣的小伙伴一起来看看吧. 制作方法 Step 1:找到想 ...
- python psycopg2_如何在Python上用“pip”安装psycopg2?
如何在Python上用"pip"安装psycopg2? 我正在使用virtualenv,我需要安装"psycopg2". 我做了以下事情:pip install ...
- python队列怎么用_如何在Python中使用多处理队列? - python
我很难理解多处理队列如何在python上工作以及如何实现它.假设我有两个python模块,它们从共享文件中访问数据,我们将这两个模块称为writer和Reader.我的计划是让读取器和写入器都将请求放 ...
- python如何做散点图-matplotlib在python上绘制3D散点图实例详解
大家可以先参考官方演示文档: 效果图: ''' ============== 3D scatterplot ============== Demonstration of a basic scatte ...
- python画三维温度散点图-matplotlib在python上绘制3D散点图实例详解
大家可以先参考官方演示文档: 效果图: ''' ============== 3D scatterplot ============== Demonstration of a basic scatte ...
- python绘制散点图-matplotlib在python上绘制3D散点图实例详解
大家可以先参考官方演示文档: 效果图: ''' ============== 3D scatterplot ============== Demonstration of a basic scatte ...
最新文章
- 用户界面设计准则从何而来
- 25个视频神同步,还能给视频声音移花接木,谷歌开源最新自监督算法
- 物联网细分领域-车联网(OBD)市场分析
- 我们来谈下高并发和分布式中的幂等处理
- 函数的方法call、apply、bind
- 最近miRNA研究上取得的新进展论文汇总
- UVA10474 Where is the Marble?
- 基于OOS批量修改资源标签值
- django中遇到的错误并解决
- dubbo 使用学习五(dubbo开发中使用到的一些服务配置方式)
- PHP中文分词的实现
- ES常用DSL语句(kibana常用语句)
- Python修改图片分辨率(附代码) | Python工具
- 海外代理ip池购买推荐,易路s5海外ip代理如何提取使用?
- JAVA毕业设计家用电器销售网站计算机源码+lw文档+系统+调试部署+数据库
- 帝豪gs车机系统wince_用销量告诉你答案 选帝豪GS准没错
- week15作业A ZJM 与霍格沃兹
- VS2010、SQL Server 2008安装详解
- 一个文科生的工程师之路
- 数据库安全性定义与检查