728x90
pygame를 활용하여 수소와 산소로 이루어진 물분자의 움직임을 표현해 보았음.
import pygame
import time, random
import numpy as np
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
pygame.init()
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
done = False
clock = pygame.time.Clock()
myFont1 = pygame.font.Font(None, 50)
myFont2 = pygame.font.Font(None, 50)
RAD1 = 10 #60
RAD2 = 5 #25
pos_x = []
pos_y = []
A1 = []
for i in range(10):
pos_x.append(320)
pos_y.append(200)
A1.append(18)
ang = 104.5
while not done:
clock.tick(100)
for event in pygame.event.get():
if event.type == pygame.QUIT:
done=True
screen.fill('#000000')
for i in range(10):
A2 = A1[i]+ang
pygame.draw.circle(screen, '#FF0000', [pos_x[i], pos_y[i]], RAD1, 0)
pygame.draw.circle(screen, '#00FF00', [pos_x[i]+(RAD1+RAD2)*np.sin(np.pi*A1[i]/90), pos_y[i]+(RAD1+RAD2)*np.cos(np.pi*A1[i]/90)], RAD2, 0)
pygame.draw.circle(screen, '#00FF00', [pos_x[i]+(RAD1+RAD2)*np.sin(np.pi*A2/90), pos_y[i]+(RAD1+RAD2)*np.cos(np.pi*A2/90)], RAD2, 0)
if random.randint(0, 1) > 0.5:
pos_x[i] += 1
else:
pos_x[i] -= 1
if random.randint(0, 1) > 0.5:
pos_y[i] += 1
else:
pos_y[i] -= 1
if random.randint(0, 1) > 0.5:
A1[i] += 3
else:
A1[i] -= 3
pygame.display.update()
728x90
'파이썬(PYTHON)' 카테고리의 다른 글
파이썬을 이용한 위치에 따른 점들의 랜덤한 움직임에 대한 고찰 (경계면 구속 조건시) (0) | 2022.10.12 |
---|---|
챔버(chamber) 제어용 GUI (0) | 2022.09.02 |
입자 운동 시뮬레이션 (particle movement simulation) (0) | 2022.09.01 |
분리막 형상 (대칭 vs 비대칭) 따른 확산 고찰과 그 결과 (0) | 2022.08.18 |
PYTORCH 숫자 이미지 인식 및 분류 (0) | 2022.06.20 |