1.파이썬 물리엔진 시각화를 위한 라이브러리들

📦 vpython vs pymunk 핵심 비교

항목 vpython pymunk
차원 3D 2D
주 용도 물리 개념 시각화 (교육용) 실제 물리 엔진 시뮬레이션 (게임/연구)
물리 기능 단순 운동 (속도, 위치, 중력) 충돌, 회전, 마찰, 반발력 등 고급 물리
시각화 자체 3D 렌더링 내장 별도 필요 (예: pygame)
학습 난이도 쉬움 (직관적) 중간 ~ 어려움 (구조적 접근)
설치 pip install vpython pip install pymunk

✅ 사용 권장 상황

1-1. 낙하 운동 시뮬레이션(vpython)

[주의]

해당 코드는 .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')

1-2. 낙하 운동 시뮬레이션(pymunk활용 2D)

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)

2. pymunk라이브러리

  1. ’munk’이름의 유래: Chipmunk라는 2D 물리 엔진에서 유래
  2. Chipmunk2D :C 언어로 작성된 경량 2D 물리 엔진

2-1. 물리엔진

  1. 물리 엔진이란?