| 항목 | 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)