成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

你們要的3D太陽(yáng)系

MadPecker / 2405人閱讀

摘要:用畫一個(gè)平面的太陽(yáng)系得到一些朋友的欣賞,然后有同學(xué)提出了繪制三維太陽(yáng)系的要求。從畫圖的角度來(lái)說(shuō),三維太陽(yáng)系其實(shí)并不難,問(wèn)題在于八大行星對(duì)黃道面的傾斜太小,所以盡管畫個(gè)三維的圖,但就觀感而言,無(wú)非是把二維的嵌入到三維空間罷了。

用Python畫一個(gè)平面的太陽(yáng)系得到一些朋友的欣賞,然后有同學(xué)提出了繪制三維太陽(yáng)系的要求。

從Python畫圖的角度來(lái)說(shuō),三維太陽(yáng)系其實(shí)并不難,問(wèn)題在于八大行星對(duì)黃道面的傾斜太小,所以盡管畫個(gè)三維的圖,但就觀感而言,無(wú)非是把二維的嵌入到三維空間罷了。

來(lái)點(diǎn)小行星

代碼如下

from os import cpu_countimport numpy as npfrom numpy.random import randimport matplotlib.pyplot as pltfrom matplotlib import animationau,G,RE,ME = 1.48e11,6.67e-11,1.48e11,5.965e24m = np.array([3.32e5,0.055,0.815,1,0.107,317.8])*ME*Gr = np.array([0,0.387,0.723,1,1.524,5.203])*REv = np.array([0,47.89,35.03,29.79,24.13,13.06])*1000theta = rand(len(m))*np.pi*2cTheta,sTheta = np.cos(theta), np.sin(theta)xyz = r*np.array([cTheta, sTheta, 0*r])     #位置三分量,因?yàn)閰?shù)太多,所以把這三個(gè)分量寫在了一起uvw = v*np.array([-sTheta, cTheta, 0*v])    #速度三分量N_ast = 100m_ast = rand(N_ast)*1e20r_ast = (rand(N_ast)*3.5+1.6)*REv_ast = np.sqrt(G*3.32e5*ME/r_ast)  #小行星速度sqrt(GM/R)theta = rand(N_ast)*np.pi*2phi = (rand(N_ast)-0.5)*0.3     #給一個(gè)隨機(jī)的小傾角cTheta,sTheta = np.cos(theta), np.sin(theta)cPhi,sPhi = np.cos(phi),np.sin(phi)xyza = r_ast*np.array([cTheta*cPhi, sTheta*cPhi, sPhi])uvwa = v_ast*np.array([-sTheta*cPhi, cTheta*cPhi, sPhi])name = "solar.gif"fig = plt.figure(figsize=(10,10))ax = fig.add_subplot(projection="3d")ax.grid()ax.set_xlim3d([-5.5*RE,5.5*RE])ax.set_ylim3d([-5.5*RE,5.5*RE])ax.set_zlim3d([-5.5*RE,5.5*RE])traces = [ax.plot([],[],[],"-", lw=0.5)[0] for _ in range(len(m))]pts = [ax.plot([],[],[],marker="o")[0] for _ in range(len(m))]pt_asts = [ax.plot([],[],[],marker=".")[0] for _ in range(N_ast)]N = 500dt = 3600*50ts =  np.arange(0,N*dt,dt)xyzs,xyzas = [],[]for _ in ts:    xyz_ij = (xyz.reshape(3,1,len(m))-xyz.reshape(3,len(m),1))    r_ij = np.sqrt(np.sum(xyz_ij**2,0))    xyza_ij = (xyz.reshape(3,1,len(m))-xyza.reshape(3,N_ast,1))    ra_ij = np.sqrt(np.sum(xyza_ij**2,0))        for j in range(len(m)):        for i in range(len(m)):            if i!=j :                uvw[:,i] += m[j]*xyz_ij[:,i,j]*dt/r_ij[i,j]**3        for i in range(N_ast):            uvwa[:,i] += m[j]*xyza_ij[:,i,j]*dt/ra_ij[i,j]**3        xyz += uvw*dt    xyza += uvwa*dt    xyzs.append(xyz.tolist())    xyzas.append(xyza.tolist())xyzs = np.array(xyzs).transpose(2,1,0)xyzas = np.array(xyzas).transpose(2,1,0)def animate(n):    for i in range(len(m)):        xyz = xyzs[i]        traces[i].set_data(xyz[0,:n],xyz[1,:n])        traces[i].set_3d_properties(xyz[2,:n])        pts[i].set_data(xyz[0,n],xyz[1,n])        pts[i].set_3d_properties(xyz[2,n])    for i in range(N_ast):        pt_asts[i].set_data(xyzas[i,0,n],xyzas[i,1,n])        pt_asts[i].set_3d_properties(xyzas[i,2,n])    return traces+pts+pt_astsani = animation.FuncAnimation(fig, animate,     range(N), interval=10, blit=True)plt.show()ani.save(name)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/122575.html

相關(guān)文章

  • 用Python搓一個(gè)陽(yáng)系

    文章目錄 日地月三體日地火太陽(yáng)系 你們要的3D太陽(yáng)系 圖片上傳之后不知為何幀率降低了許多。。。 日地月三體 所謂三體,就是三個(gè)物體在重力作用下的運(yùn)動(dòng)。由于三點(diǎn)共面,所以三個(gè)質(zhì)點(diǎn)僅在重力作用下的運(yùn)動(dòng)軌跡也必然無(wú)法逃離平面。 三體運(yùn)動(dòng)所遵循的規(guī)律就是古老而經(jīng)典的萬(wàn)有引力 F ...

    shaonbean 評(píng)論0 收藏0
  • 12個(gè)令人驚嘆的CSS實(shí)驗(yàn)項(xiàng)目

    摘要:看看這些驚人的純實(shí)驗(yàn),也許你自己也可以嘗試一下。項(xiàng)目鏈接疊疊高游戲你可以不用來(lái)編寫一個(gè)游戲。這個(gè)純粹用實(shí)現(xiàn)的疊疊高游戲看上去很簡(jiǎn)單,但是很有趣,而且圖形也很漂亮。項(xiàng)目鏈接鬼影漸變效果按鈕令人驚訝的是它是只用編寫的。 翻譯:瘋狂的技術(shù)宅原文:https://1stwebdesigner.com/12... 本文首發(fā)微信公眾號(hào):jingchengyideng歡迎關(guān)注,每天都給你推送新鮮...

    LiuZh 評(píng)論0 收藏0
  • 12個(gè)令人驚嘆的CSS實(shí)驗(yàn)項(xiàng)目

    摘要:看看這些驚人的純實(shí)驗(yàn),也許你自己也可以嘗試一下。項(xiàng)目鏈接疊疊高游戲你可以不用來(lái)編寫一個(gè)游戲。這個(gè)純粹用實(shí)現(xiàn)的疊疊高游戲看上去很簡(jiǎn)單,但是很有趣,而且圖形也很漂亮。項(xiàng)目鏈接鬼影漸變效果按鈕令人驚訝的是它是只用編寫的。 翻譯:瘋狂的技術(shù)宅原文:https://1stwebdesigner.com/12... 本文首發(fā)微信公眾號(hào):jingchengyideng歡迎關(guān)注,每天都給你推送新鮮...

    wow_worktile 評(píng)論0 收藏0
  • 12個(gè)令人驚嘆的CSS實(shí)驗(yàn)項(xiàng)目

    摘要:看看這些驚人的純實(shí)驗(yàn),也許你自己也可以嘗試一下。項(xiàng)目鏈接疊疊高游戲你可以不用來(lái)編寫一個(gè)游戲。這個(gè)純粹用實(shí)現(xiàn)的疊疊高游戲看上去很簡(jiǎn)單,但是很有趣,而且圖形也很漂亮。項(xiàng)目鏈接鬼影漸變效果按鈕令人驚訝的是它是只用編寫的。 翻譯:瘋狂的技術(shù)宅原文:https://1stwebdesigner.com/12... 本文首發(fā)微信公眾號(hào):jingchengyideng歡迎關(guān)注,每天都給你推送新鮮...

    CastlePeaK 評(píng)論0 收藏0
  • WebGL three.js學(xué)習(xí)筆記 紋理貼圖模擬陽(yáng)系運(yùn)轉(zhuǎn)

    摘要:紋理貼圖的應(yīng)用以及實(shí)現(xiàn)一個(gè)太陽(yáng)系的自轉(zhuǎn)公轉(zhuǎn)點(diǎn)擊查看演示地址中的紋理紋理貼圖是通過(guò)將圖像應(yīng)用到對(duì)象的一個(gè)或多個(gè)面,來(lái)為對(duì)象添加細(xì)節(jié)的一種方法。 紋理貼圖的應(yīng)用以及實(shí)現(xiàn)一個(gè)太陽(yáng)系的自轉(zhuǎn)公轉(zhuǎn) 點(diǎn)擊查看demo演示 demo地址:https://nsytsqdtn.github.io/d... three.js中的紋理 紋理貼圖是通過(guò)將圖像應(yīng)用到對(duì)象的一個(gè)或多個(gè)面,來(lái)為3D對(duì)象添加細(xì)節(jié)的一種...

    Pandaaa 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<