日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python绘制太阳系模型_用python做一个漂亮的太阳系运动模拟

發(fā)布時(shí)間:2023/12/15 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python绘制太阳系模型_用python做一个漂亮的太阳系运动模拟 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

貼一張靜態(tài)圖

太陽系現(xiàn)在只有8大行星,連太陽一起,一共是9張圖片。如果沒有的朋友,可以到文末的下載地址下載。

def openSolor(solar):

def loadImg(name):

str1= os.path.join(basePath, name+ '.png')

img= Image.open(str1)

solar[name]= img

basePath= r'D:\太陽系\素材'

#

loadImg('sun')

loadImg('venus')

loadImg('jupiter')

loadImg('earth')

loadImg('mars')

loadImg('mercury')

loadImg('neptune')

loadImg('pluto')

loadImg('uranus')

loadImg('saturn')

基本運(yùn)動(dòng)原理

每顆行星的運(yùn)動(dòng)軌跡都是橢圓的,我們這里用一個(gè)參數(shù)方程來計(jì)算坐標(biāo):

x=cos(arc)*a

y=sin(arc)*b

其中,a,b 是橢圓的長軸和短軸,arc是運(yùn)行角度,x,y是水平面坐標(biāo)。

參數(shù)的設(shè)置

為了效果好看,實(shí)際參數(shù)不可能是真實(shí)的。但有幾個(gè)關(guān)鍵條件至少應(yīng)該滿足。首先行星順序別弄錯(cuò),行星軌道之間的間距不是等距的,而是漸增的。其次是火星和木星直接有一個(gè)小行星帶,所以這兩個(gè)行星的軌道之間最好留出一個(gè)空隙。還有就是越往外圈的行星,繞行速度越慢。

def initSolar(posList):

def getNumber():

return random.randint(0,35)*10

posList['sun']={'pos': (0,360), 'rate': 2, 'scale':1, 'radx': 1, 'layer':360}

posList['mercury']={'rate': 0.15, 'radx':500, 'arc': getNumber(), 'rady': 200, 'speed':15}

posList['venus']={'rate': 0.2, 'radx':550, 'arc': getNumber(), 'rady': 250, 'speed':10}

posList['earth']={'rate': 0.2, 'radx':630, 'arc': getNumber(), 'rady': 320, 'speed':8}

posList['mars']={'rate': 0.2, 'radx':740, 'arc': getNumber(), 'rady': 410, 'speed':6}

posList['jupiter']={'rate': 0.7, 'radx':1050, 'arc': getNumber(), 'rady': 650, 'speed':4}

posList['saturn']={'rate': 1, 'radx':1250, 'arc': getNumber(), 'rady': 800, 'speed':3}

posList['uranus']={'rate': 0.3, 'radx':1480, 'arc': getNumber(), 'rady': 970, 'speed':2}

posList['neptune']={'rate': 0.3, 'radx':1740, 'arc': getNumber(), 'rady': 1160, 'speed':2}

投影

一般的效果是將行星圍繞太陽的公轉(zhuǎn)面至于一個(gè)水平面上,然后投影到垂直的屏幕上。投影算法不難。

x= math.sin(math.radians(a))* radx+ x0

y= math.cos(math.radians(a))* rady+ y0

showX= x

showY= midY- H/(D+y)*y

其中,x,y是公轉(zhuǎn)平面坐標(biāo),showX,showY是投影到垂直平面的坐標(biāo)。H是平面的高度,D是屏幕到太陽系的距離。

從數(shù)據(jù)來看,我們的太陽系模型是一個(gè)非常小的模型,或者電腦屏幕非常大。因?yàn)檫@兩者實(shí)際差不多大,以至于從觀察者的視角就可以出現(xiàn)很明顯的近大遠(yuǎn)小效果。從這種效果就可以知道,數(shù)據(jù)與真實(shí)值差別極為巨大。

近大遠(yuǎn)小的效果,只與y相關(guān)。

data['scale']= (y0+D)/(y+D)

遮擋效果

為了有真實(shí)感,行星之間、行星與軌道之間,軌道與太陽之間等等的遮擋效果是最關(guān)鍵的。

我們的做法是先畫后半?yún)^(qū),再畫太陽,再畫前半?yún)^(qū)。后半?yún)^(qū)中,遠(yuǎn)日行星先畫;前半?yún)^(qū)中,近日行星先畫。以保證正確的遮擋效果。

drawOrb(img, solar, posList, 0, 90, True)

pasteSolor(img, solar, posList)

drawOrb(img, solar, posList, 90, 180, False)

比較復(fù)雜一點(diǎn)的是行星與自身軌道之間的遮擋關(guān)系。必須實(shí)現(xiàn)一線穿一球的效果才好看。而且穿球位置不是固定不變的。這里,我們根據(jù)行星所在角度的不同,將軌道拆分為兩半來畫。一部分軌道是被行星遮擋的,另一部分軌道遮擋行星,但留一些空間,以實(shí)現(xiàn)比較自然的穿球效果。

drawArc(arc1, arc)

rate= posList[name]['rate']* posList[name]['scale']

pic= solarImg[name].resize(effect.tupleRound(effect.tupleMul(solarImg[name].size, rate)), Image.ANTIALIAS)

pos= effect.tupleRound(effect.tupleAdd(posList[name]['pos'], effect.tupleMul(pic.size, -0.5)))

r, g, b, alpha= pic.split()

img.paste(pic, pos, mask= alpha)

# 穿球點(diǎn),隨arc不同而不同

# 90度位置,在中心穿球,

# 越接近0或180度,越接近球邊緣

# 根據(jù)這種性質(zhì),采用cos來模擬

darc= abs(round(math.cos(math.radians(arc))*solarImg[name].size[1]*rate/50))

# darc= abs(round(math.cos(math.radians(arc))*5))

# print(name, arc, darc)

drawArc(arc+darc, arc2)

素材下載地址:

鏈接:https://pan.baidu.com/s/18ELL4aL-jHbIbIacMpVbjA

提取碼:5bjj

總結(jié)

以上是生活随笔為你收集整理的python绘制太阳系模型_用python做一个漂亮的太阳系运动模拟的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚欧成人精品 | av观看网址 | 久久久亚洲国产精品 | 色婷婷18 | 性做久久久久久久久 | 国产成人精品久久二区二区91 | 欧美老肥妇做.爰bbww视频 | 拔擦8x成人一区二区三区 | 欧美久久久久久 | 色婷婷aⅴ | 国产成人精品毛片 | 肉色丝袜脚交一区二区 | 麻豆视频免费版 | 玖草在线视频 | 欧美日韩久 | 黄色天堂av| 男人插女人的网站 | 87福利视频 | 无人码人妻一区二区三区免费 | 国产91沙发系列 | 97免费观看视频 | 中国性老太hd大全69 | 国产免费高清视频 | 日韩成人av影院 | zzjj国产精品一区二区 | 欧美亚洲色图视频 | 在线不欧美| 日韩不卡一区二区三区 | 久久蜜臀精品av | 空姐吹箫视频大全 | 国内精品在线观看视频 | 97小视频 | 女人下面流白浆的视频 | 天堂资源 | 91九色蝌蚪视频 | 爱情岛论坛亚洲自拍 | 日韩黄网站| 日韩成人高清视频在线观看 | 国产91一区二区三区 | 毛片网站大全 | 日韩三级麻豆 | 黄色大片儿. | 人人妻人人做人人爽 | 天天综合天天色 | 182tv午夜福利在线观看 | 一区二区福利电影 | 狠狠狠狠狠狠干 | 欧美激情视频在线播放 | 黄骗免费网站 | av大帝 | 最新av在线播放 | 在线观看视频日韩 | 少妇导航av | 亚洲品质自拍 | 亚洲精品久久久久久宅男 | 久久五十路 | 高清福利视频 | 国内性爱视频 | 777米奇影视第四色 五月丁香久久婷婷 | 97av视频在线| 岛国在线视频 | 中文字幕理伦片免费看 | 国产日韩欧美精品 | 天堂√8在线中文 | 男人午夜剧场 | 涩色网| 日韩电影中文字幕在线观看 | 精品国产一区二区不卡 | 玉女心经是什么意思 | 天天做天天躁天天躁 | 三级福利片 | 美国黄色一级大片 | 国产一国产二 | 狠狠爱五月婷婷 | 日韩在线观看视频网站 | www狠狠 | 老司机午夜在线 | 亚洲国产第一页 | 激情小说视频在线 | 白白色2012年最新视频 | 午夜在线免费观看 | 久久综合综合久久 | 在线视频99| 天天夜夜草 | 在线观看福利网站 | 九九热免费 | 久久久久成人精品无码中文字幕 | 美女131爽爽爽做爰视频 | 亚州视频在线 | 国产一级二级三级在线 | 91精品国产aⅴ一区二区 | 正在播放adn156松下纱荣子 | 一本综合久久 | 欧洲色网 | 久久8| 中文字幕在线播放av | 91看片免费版 | 亚洲网色 | 夜夜天堂|