어떻게 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 을 사용 하여 태양계의 운행 을 간단하게 모 의 했 습 니 다.관심 이 있 는 파트너 는 스스로 코드 를 실행 하거나 기능 을 더욱 확장 할 수 있 습 니 다.
파 이 썬 동적 모 의 태양 계 를 어떻게 활용 하 는 지 에 관 한 글 은 여기까지 입 니 다.더 많은 파 이 썬 동적 모 의 태양 계 운행 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.