항목 | vpython | pymunk |
---|---|---|
차원 | 3D | 2D |
주 용도 | 물리 개념 시각화 (교육용) | 실제 물리 엔진 시뮬레이션 (게임/연구) |
물리 기능 | 단순 운동 (속도, 위치, 중력) | 충돌, 회전, 마찰, 반발력 등 고급 물리 |
시각화 | 자체 3D 렌더링 내장 | 별도 필요 (예: pygame ) |
학습 난이도 | 쉬움 (직관적) | 중간 ~ 어려움 (구조적 접근) |
설치 | pip install vpython |
pip install pymunk |
[주의]
해당 코드는 .ipynb이 아닌 파이썬 스크립트 형태로 실행해야 함
# vpython 자유 낙하 시뮬레이션
from vpython import sphere, vector, rate, color, scene, box
g = 9.8 # 중력 가속도
dt = 0.01 # 시간 간격
v = 0 # 초기 속도
y = 5 # 초기 높이
# 바닥 추가 - 위치를 더 아래로 조정 (-0.1 → -2.0)
floor = box(pos=vector(0, -2.0, 0), size=vector(10, 0.2, 10), color=color.green)
ball = sphere(pos=vector(0, y, 0), radius=0.2, color=color.red, make_trail=True)
# 공이 실제 바닥에 닿을 때까지 계속
# 바닥 위치 + 바닥 높이의 절반 + 공의 반지름 = 공이 바닥에 닿는 위치
floor_top = floor.pos.y + floor.size.y/2
# 바닥 윗면의 y좌표
while ball.pos.y > floor_top + ball.radius:
rate(100) # 1초에 100프레임
v = v - g * dt
y = y + v * dt
ball.pos.y = y
# 시뮬레이션이 끝난 후 사용자 클릭을 기다림
scene.append_to_caption("\\n시뮬레이션 완료. 클릭하면 종료됩니다.")
scene.waitfor('click')
import pygame, pymunk, pymunk.pygame_util
# pip install pygame으로 pygame 설치, pip install pymunk로 pymunk 설치# 1. 게임 초기화 (game initialize)
pygame.init()
# 2. 게임창 옵션 설정 (window option)
size = (400, 400) # 게임창 크기 (window size)
screen = pygame.display.set_mode(size)
title = "Physics Simulator" # 창 제목 (window title)
pygame.display.set_caption(title)