本文目錄一覽:
求Python三體建模代碼
三體模型
1. 代碼
現在為了把之前的代碼延伸到三體系統,需要給常數增加一些東西——增加第三體的質量、位置和速率向量。把第三恆星的質量視作和太陽的質量等同。
#Mass of the Third Starm3=1.0 #Third Star#Position of the Third Starr3=[0,1,0] #mr3=sci.array(r3,dtype=’float64′)#Velocity of the Third Starv3=[0,-0.01,0]v3=sci.array(v3,dtype=’float64′)
需要更新代碼中質心和質心速率的公式。#Update COM formular_com=(m1*r1+m2*r2+m3*r3)/(m1+m2+m3)#Update velocity of COM formulav_com=(m1*v1+m2*v2+m3*v3)/(m1+m2+m3)
對一個三體系統來說,需要修改運動方程使之包括另一物體施加的額外引力。因此,需要在RHS上,對問題中每一對物體施加力的其他物體增加一個力項。在三體系統的情況下,一個物體會受到其餘兩個物體施加的力的影響並因此在RHS上出現兩個力項。數學上可表示為:
為在代碼中反映這些變化,需要為odeint求解器創建一個新函數。
def ThreeBodyEquations(w,t,G,m1,m2,m3): r1=w[:3] r2=w[3:6] r3=w[6:9] v1=w[9:12] v2=w[12:15] v3=w[15:18] r12=sci.linalg.norm(r2-r1) r13=sci.linalg.norm(r3-r1) r23=sci.linalg.norm(r3-r2) dv1bydt=K1*m2*(r2-r1)/r12**3+K1*m3*(r3-r1)/r13**3 dv2bydt=K1*m1*(r1-r2)/r12**3+K1*m3*(r3-r2)/r23**3 dv3bydt=K1*m1*(r1-r3)/r13**3+K1*m2*(r2-r3)/r23**3 dr1bydt=K2*v1 dr2bydt=K2*v2 dr3bydt=K2*v3 r12_derivs=sci.concatenate((dr1bydt,dr2bydt)) r_derivs=sci.concatenate((r12_derivs,dr3bydt)) v12_derivs=sci.concatenate((dv1bydt,dv2bydt)) v_derivs=sci.concatenate((v12_derivs,dv3bydt)) derivs=sci.concatenate((r_derivs,v_derivs)) return derivs
最後,調用odeint函數並向其提供上述函數連同初始條件。#Package initial parametersinit_params=sci.array([r1,r2,r3,v1,v2,v3]) #Initial parametersinit_params=init_params.flatten() #Flatten to make 1D arraytime_span=sci.linspace(0,20,500) #20 orbital periods and 500 points#Run the ODE solverimport scipy.integratethree_body_sol=sci.integrate.odeint(ThreeBodyEquations,init_params,time_span,args=(G,m1,m2,m3))
c4d怎麼用python畫三維圖
要以Python生成器為媒介。
用以下代碼可以簡單行程一個三維圖,在這個基礎上根據您的需要改寫代碼就可以了。
在生成器內的python代碼會生成一個object。默認下,生成了一個立方體,並返回:
import c4d
def main():
return c4d.BaseObject(c4d.Ocube)
UserData輸入
當然也可以返回別的物體,或者用userdata調整物體參數。注意op可以快速引用生成器對象。
importc4d
defmain():
cone =c4d.BaseObject(c4d.Ocone)
cone[c4d.PRIM_CONE_TRAD] = op[c4d.ID_USERDATA,1]
return cone
具體創建三維圖步驟如下
1首先要【創建】-【造型】-【python生成器】,默認生成一個立方體即python編輯器
2-選中對象,右下角【打開python編輯器】
3-代碼表示定義一個函數並返回C4D基本物體
4-這裡簡單改一下,把原代碼中的Ocube改成Osphere,點一下執行,會生成一個三維球體。對於基本造型對象,這裡的對象名稱通用語法為大寫字母O加對象的英文。
5-這裡還可以用定義變量返回值的表達方法,比如這裡定義變量cone(圓錐),c4d的屬性就是大寫字母O加上圓錐的英文即Ocone,返回這個變量值,執行就得到了一個圓錐。
6-除了生成基本三維圖形,python編輯器可以做很多事情,這裡如果有一定的python編碼基礎,會更容易一些。可以在網上找幾個實例試一下,比如這種,生成數字的。可以在搜索引擎輸入關鍵字Cinema 4D – Python scripts來檢索別人寫好的腳本。
醫學圖像三維重建,體繪製中的光線投射算法(raycast)的MATLAB或者python實現代碼
介紹了運用Matlab軟件進行CT斷層圖像的三維重建的原理及實現方法。運用計算機圖形學和圖像處理技術將計算機斷層掃描(CT)等成像設備得到的人體斷層二維圖像序列,在計算機中重建成三維圖像數據,並在屏幕上形象逼真地顯示人體器官的立體視圖。可以對重構出的器官圖像進行諸如旋轉、縮放等操作,重建方法簡單,顯示效果良好
原創文章,作者:DWAMT,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/128862.html