Python 板


LINE

我觉得这图很好 http://matplotlib.sourceforge.net/trunk-docs/examples/animation/simple_3danim.html 或是这个影片(有一个物件在里面动,外面有个额外视窗可以看轨迹) https://www.youtube.com/watch?v=0GzCw92Q7a4
希望用类似这code的方式画出我生产出来的三维data import matplotlib import time import math import matplotlib as mpl from mpl_toolkits.mplot3d import Axes3D import matplotlib.animation as animation import mpl_toolkits.mplot3d.axes3d as p3 import numpy as np import matplotlib.pyplot as plt import numpy from pylab import * class vec(object): def __init__(self, x, y, z): self.vec=(x, y, z) def unit(self, vec): dist=math.sqrt(vec[0]**2+vec[1]**2+vec[2]**2) u=(vec[0]/dist,vec[1]/dist,vec[2]/dist) return u def add(self, vector1, vector2): summation=(vector1[0]+vector2[0], vector1[1]+vector2[1], vector1[2]+vector2[2]) return summation def addfour(self, vec1, vec2, vec3, vec4): comebine1=vector.add(vec1,vec2) comebine2=vector.add(vec3,vec4) outcome=vector.add(comebine1, comebine2) return outcome def smultiply(self,scalar, vec): product=(scalar*vec[0],scalar*vec[1],scalar*vec[2]) return product def innerproduct(self, vec1, vec2): result=(vec1[0]*vec2[0]+vec1[1]*vec2[1]+vec1[2]*vec2[2]) return result def crossproduct(self, vec1, vec2): res=(vec1[1]*vec2[2]-vec1[2]*vec2[1], vec1[2]*vec2[0]-vec1[0]*vec2[2], vec1[0]*vec2[1]-vec1[1]*vec2[0]) return res def function(self, vec1, vec2): coef1=c1*inner(vec2, vec2) term1=self.smultiply(coef1, vec2) term2=self.smultiply(c2,self.crossproduct(vec2,vec1)) term3=self.smultiply(c3,(0,0,1)) term4=self.smultiply(c4*vec1[2],vec1) sumoffour=self.addfour(term1,term2,term3,term4) out=self.smultiply(h, sumoffour) return out def rungekutta1(self,vec1,vec): k11=self.smultiply(h,vec) k11_half=self.smultiply(.5, k11) y12=self.add(vec, k11_half) k12=self.smultiply(h,y12) k12_half=self.smultiply(.5, k12) y13=self.add(vec, k12_half) k13=self.smultiply(h,y13) y14=self.add(vec, k13) k14=self.smultiply(h,y14) k12_double=self.smultiply(2.0, k12) k13_double=self.smultiply(2.0, k13) k1s=self.addfour(k11, k12_double, k13_double, k14) n_next=self.add(vec1, self.smultiply(1.0/6, k1s)) return n_next def rungekutta2(self, vec1, vec2): k21=self.function(vec1, vec2) n22=self.add(vec1,self.smultiply(.5*h,(1,1,1))) d_n22=self.add(vec2,self.smultiply(.5,k21)) k22=self.function(n22,d_n22) n23=self.add(vec1,self.smultiply(.5*h,(1,1,1))) d_n23=self.add(vec2,self.smultiply(.5,k22)) k23=self.function(n23,d_n23) n24=self.add(vec1,self.smultiply(h,(1,1,1))) d_n24=self.add(vec2,k23) k24=self.function(n24,d_n24) k22_double=self.smultiply(2.0,k22) k23_double=self.smultiply(2.0,k23) k2s=self.addfour(k21, k22_double, k23_double, k24) d_n_next=self.add(vec2, self.smultiply(1.0/6, k2s)) return d_n_next fig = plt.figure() ax = p3.Axes3D(fig) c1=-1.0 c2=-3.0 c3=4.0 c4=-5.0 h=.01 vector=vec(1,2,3) allone=vec(1.0,1.0,0.0) n=(1.0,1.0,.0) d_n=(1.0,-1.0,.0) n=vector.unit(n) d_n=vector.unit(d_n) for i in arange(1,100): n=vector.rungekutta1(n, d_n) n=vector.unit(n) d_n=vector.rungekutta2(n, d_n) d_n=vector.unit(d_n) x = n[0] y = n[1] z = n[2] d_x=d_n[0] d_y=d_n[1] d_z=d_n[2] 主要其实就在最後这部分,生产出一堆向量n & d_n, 希望是边算边画出来位置在跑的状况,理想上还要把跑的速度(d_n)给显示出来 不过我想先试试看有没有简单的指令,可以做到把点(n, position)的改变 重复描绘在同一个3d图里面?或是其实如果只有更新的点也可以 (不过那样的话要有够明显的标示) 我有尝试加上 ax.plot(x,y) plt.show() 或是 ax.plot3d(x,y,z) plt.show() 没效果 能提供一点建议吗? --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.24.62.187 ※ 编辑: Strogatz 来自: 114.24.62.187 (03/25 14:51)
1F:→ Strogatz:惨 没人理我 不过我想我应该是搞得出来拉 04/01 15:50
2F:推 apua:如果是要画单纯的3D图形,可以考虑用Vpython试试看 04/10 10:38







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP