어떻게 Python 동 태 를 이용 하여 태양계 운행 을 모 의 합 니까?

머리말
태양계 하면 코페르니쿠스 와 그의 일심 설,혹은 일심 설 을 지 키 고 발전 시 키 는 투사 브 루 노 를 떠 올 릴 수 있다.그들 은 한 줄기 빛 처럼 그 시대 의 밤하늘 을 밝 히 고 역사 에 관심 이 있 는 동료 들 에 대해 깊이 알 아 볼 수 있다.더 이상 말 하지 않 는 다.
태양 은 거대 한 인력 으로 주변 행성,위성 등 을 돌 게 하여 태양 계 를 구성 했다.주로 태양,8 개의 행성,205 개의 위성 과 몇 십 만 개의 소행성 등 을 포함한다.본 고 는 Python 을 이용 하여 태양계의 운행 을 간단하게 모 의 하고 자 한다.
이루어지다
기능 의 실현 은 주로 Python 의 pygame 라 이브 러 리 입 니 다.우 리 는 먼저 필요 한 모든 Python 라 이브 러 리 를 가 져 옵 니 다.코드 는 다음 과 같 습 니 다.

import sys
import math
import pygame
from pygame.locals import *
이 어 상수(예 를 들 어 색상,너비 등)와 창 을 만 드 는 것 을 정의 합 니 다.코드 는 다음 과 같 습 니 다.

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("   ")
#     (        )
clock = pygame.time.Clock()
#        
pos_v = pos_e = pos_mm = []
#   、          
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
우 리 는 먼저 창 에 태양 을 그 렸 습 니 다.코드 는 다음 과 같 습 니 다.

pygame.draw.circle(screen, YELLOW, position, 60, 0)
효과 보기:

이어서 지 구 를 그 려 서 태양 주 위 를 회전 시 키 세 요.코드 는 다음 과 같 습 니 다.

#    
roll_e += 0.01 #          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)
효과 보기:

다른 몇 개의 별의 실현 도 비슷 하 다.코드 는 다음 과 같다.

#       
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)
마지막 으로 전체 실현 의 동태 적 효 과 를 살 펴 보 자.

속 냄새 나 는 거 아니 야?
총결산
본 고 는 Python 을 사용 하여 태양계의 운행 을 간단하게 모 의 했 습 니 다.관심 이 있 는 파트너 는 스스로 코드 를 실행 하거나 기능 을 더욱 확장 할 수 있 습 니 다.
파 이 썬 동적 모 의 태양 계 를 어떻게 활용 하 는 지 에 관 한 글 은 여기까지 입 니 다.더 많은 파 이 썬 동적 모 의 태양 계 운행 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기