最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何利用Python動態(tài)模擬太陽系運(yùn)轉(zhuǎn)

 更新時(shí)間:2020年09月04日 11:17:22   作者:Python 技術(shù)  
這篇文章主要給大家介紹了關(guān)于如何利用Python動態(tài)模擬太陽系運(yùn)轉(zhuǎn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

提到太陽系,大家可能會想到哥白尼和他的日心說,或是捍衛(wèi)、發(fā)展日心說的斗士布魯諾,他們像一縷光一樣照亮了那個(gè)時(shí)代的夜空,對歷史感興趣的小伙伴可以深入了解一下,這里就不多說了。

太陽以巨大的引力使周邊行星、衛(wèi)星等繞其運(yùn)轉(zhuǎn),構(gòu)成了太陽系,它主要包括太陽、8 個(gè)行星、205 個(gè)衛(wèi)星以及幾十萬個(gè)小行星等,本文我們使用 Python 來簡單的動態(tài)模擬一下太陽系的運(yùn)轉(zhuǎn)。

實(shí)現(xiàn)

功能的實(shí)現(xiàn),主要要到的還是 Python 的 pygame 庫,我們先導(dǎo)入需要的所有 Python 庫,代碼如下所示:

import sys
import math
import pygame
from pygame.locals import *

接著定義一些常量(如:顏色、寬高等)及創(chuàng)建窗口,代碼如下所示:

WHITE =(255, 255, 255)
SILVER = (192, 192, 192)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)
SandyBrown = (244, 164, 96)
PaleGodenrod = (238, 232, 170)
PaleVioletRed = (219, 112, 147)
Thistle = (216, 191, 216)
size = width, height = 800, 600
screen = pygame.display.set_mode(size)
pygame.display.set_caption("太陽系")
# 創(chuàng)建時(shí)鐘(控制游戲循環(huán)頻率)
clock = pygame.time.Clock()
# 定義三個(gè)空列表
pos_v = pos_e = pos_mm = []
# 地球、月球等行星轉(zhuǎn)過的角度
roll_v = roll_e = roll_m = 0
roll_3 = roll_4 = roll_5 = roll_6 = roll_7 = roll_8 = 0
# 太陽的位置(中心)
position = size[0] // 2, size[1] // 2

我們先在窗口中畫一個(gè)太陽,代碼如下:

pygame.draw.circle(screen, YELLOW, position, 60, 0)

看一下效果:

接著畫一個(gè)地球,讓其繞著太陽旋轉(zhuǎn),代碼如下:

# 畫地球
roll_e += 0.01 # 假設(shè)地球每幀公轉(zhuǎn) 0.01 pi
pos_e_x = int(size[0] // 2 + size[1] // 6 * math.sin(roll_e))
pos_e_y = int(size[1] // 2 + size[1] // 6 * math.cos(roll_e))
pygame.draw.circle(screen, BLUE, (pos_e_x, pos_e_y), 15, 0)
# 地球的軌跡線
pos_e.append((pos_e_x, pos_e_y))
if len(pos_e) > 255:
 pos_e.pop(0)
for i in range(len(pos_e)):
 pygame.draw.circle(screen, SILVER, pos_e[i], 1, 0)

看一下效果:

我們再接著畫月球,代碼如下:

# 畫月球
roll_m += 0.1
pos_m_x = int(pos_e_x + size[1] // 20 * math.sin(roll_m))
pos_m_y = int(pos_e_y + size[1] // 20 * math.cos(roll_m))
pygame.draw.circle(screen, SILVER, (pos_m_x, pos_m_y), 8, 0)
# 月球的軌跡線
pos_mm.append((pos_m_x, pos_m_y))
if len(pos_mm) > 255:
 pos_mm.pop(0)
for i in range(len(pos_mm)):
 pygame.draw.circle(screen, SILVER, pos_mm[i], 1, 0)

看一下效果:

其他幾個(gè)星球的實(shí)現(xiàn)也類似,代碼如下:

# 其他幾個(gè)行星
roll_3 += 0.03
pos_3_x = int(size[0] // 2 + size[1] // 3.5 * math.sin(roll_3))
pos_3_y = int(size[1] // 2 + size[1] // 3.5 * math.cos(roll_3))
pygame.draw.circle(screen, GREEN, (pos_3_x, pos_3_y), 20, 0)
roll_4 += 0.04
pos_4_x = int(size[0] // 2 + size[1] // 4 * math.sin(roll_4))
pos_4_y = int(size[1] // 2 + size[1] // 4 * math.cos(roll_4))
pygame.draw.circle(screen, SandyBrown, (pos_4_x, pos_4_y), 20, 0)
roll_5 += 0.05
pos_5_x = int(size[0] // 2 + size[1] // 5 * math.sin(roll_5))
pos_5_y = int(size[1] // 2 + size[1] // 5 * math.cos(roll_5))
pygame.draw.circle(screen, PaleGodenrod, (pos_5_x, pos_5_y), 20, 0)
roll_6 += 0.06
pos_6_x = int(size[0] // 2 + size[1] // 2.5 * math.sin(roll_6))
pos_6_y = int(size[1] // 2 + size[1] // 2.5 * math.cos(roll_6))
pygame.draw.circle(screen, PaleVioletRed, (pos_6_x, pos_6_y), 20, 0)
roll_7 += 0.07
pos_7_x = int(size[0] // 2 + size[1] // 4.5 * math.sin(roll_7))
pos_7_y = int(size[1] // 2 + size[1] // 4.5 * math.cos(roll_7))
pygame.draw.circle(screen, Thistle, (pos_7_x, pos_7_y), 20, 0)
roll_8 += 0.08
pos_8_x = int(size[0] // 2 + size[1] // 5.5 * math.sin(roll_8))
pos_8_y = int(size[1] // 2 + size[1] // 5.5 * math.cos(roll_8))
pygame.draw.circle(screen, WHITE, (pos_8_x, pos_8_y), 20, 0)

最后,我們來看一下整體實(shí)現(xiàn)的動態(tài)效果:

是不是有內(nèi)味了。

總結(jié)

本文我們使用 Python 簡單模擬了太陽系的運(yùn)轉(zhuǎn),有興趣的小伙伴可以自己運(yùn)行一下代碼或?qū)δ茏鲞M(jìn)一步擴(kuò)展。

到此這篇關(guān)于如何利用Python動態(tài)模擬太陽系運(yùn)轉(zhuǎn)的文章就介紹到這了,更多相關(guān)Python動態(tài)模擬太陽系運(yùn)轉(zhuǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中range函數(shù)的使用方法

    Python中range函數(shù)的使用方法

    這篇文章主要介紹了Python中range函數(shù)的使用方法,文章基于Python3環(huán)境展開range函數(shù)的使用方法,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • Python 日期時(shí)間datetime 加一天,減一天,加減一小時(shí)一分鐘,加減一年

    Python 日期時(shí)間datetime 加一天,減一天,加減一小時(shí)一分鐘,加減一年

    這篇文章主要介紹了Python 日期時(shí)間datetime 加一天,減一天,加減一小時(shí)一分鐘,加減一年,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 在多種情況/開發(fā)環(huán)境中運(yùn)行python腳本和代碼的技巧分享

    在多種情況/開發(fā)環(huán)境中運(yùn)行python腳本和代碼的技巧分享

    Python腳本或程序是包含可執(zhí)行Python代碼的文件,能夠運(yùn)行Python腳本和代碼可能是您作為Python開發(fā)人員所需的最重要的技能,在本教程中,您將學(xué)習(xí)一些運(yùn)行Python腳本和代碼的技術(shù),在每種情況下使用的技術(shù)將取決于您的環(huán)境、平臺、需求和技能
    2023-11-11
  • python開發(fā)之for循環(huán)操作實(shí)例詳解

    python開發(fā)之for循環(huán)操作實(shí)例詳解

    這篇文章主要介紹了python開發(fā)之for循環(huán)操作,以實(shí)例形式較為詳細(xì)的分析了Python中for循環(huán)的具體使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • Python3.10耙梳加密算法Encryption種類及開發(fā)場景

    Python3.10耙梳加密算法Encryption種類及開發(fā)場景

    這篇文章主要為大家介紹了Python3.10加密,各種加密,耙梳加密算法Encryption種類及開發(fā)場景運(yùn)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • qpython3 讀取安卓lastpass Cookies

    qpython3 讀取安卓lastpass Cookies

    這篇文章主要介紹了qpython3 讀取安卓lastpass Cookies的相關(guān)資料,需要的朋友可以參考下
    2016-06-06
  • Python 轉(zhuǎn)換RGB顏色值的示例代碼

    Python 轉(zhuǎn)換RGB顏色值的示例代碼

    這篇文章主要介紹了Python 轉(zhuǎn)換RGB顏色值的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Python玩轉(zhuǎn)加密的技巧【推薦】

    Python玩轉(zhuǎn)加密的技巧【推薦】

    Python 中的一個(gè)有用的基本加密庫就叫做 cryptography 。這篇文章主要介紹了Python玩轉(zhuǎn)加密的技巧,需要的朋友可以參考下
    2019-05-05
  • Python常用庫Numpy進(jìn)行矩陣運(yùn)算詳解

    Python常用庫Numpy進(jìn)行矩陣運(yùn)算詳解

    這篇文章主要介紹了Python常用庫Numpy進(jìn)行矩陣運(yùn)算詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • python matlibplot繪制多條曲線圖

    python matlibplot繪制多條曲線圖

    這篇文章主要為大家詳細(xì)介紹了python matlibplot繪制多條曲線圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07

最新評論

云南省| 都昌县| 黔东| 雷州市| 河南省| 望奎县| 镇安县| 富顺县| 军事| 漳州市| 成武县| 龙江县| 郧西县| 桦甸市| 田林县| 南乐县| 三都| 阳谷县| 南京市| 清苑县| 通辽市| 古交市| 六枝特区| 嘉鱼县| 会昌县| 玉环县| 平遥县| 惠水县| 新田县| 颍上县| 昌江| 永顺县| 高州市| 甘孜县| 临邑县| 许昌市| 莎车县| 隆子县| 潢川县| 吉木乃县| 张北县|