이번 시간에는 수평으로 던진 물체의 운동 시뮬레이션을 해보겠습니다.
기존에 작성된 코드에서 어떤 부분을 수정하면 될까요?
맞습니다.
# Parameters
g = vector(0, -10, 0) # Gravitational acceleration (m/s^2)
initial_position = vector(0, 20, 0) # Initial position (m)
initial_velocity = vector(0, 0, 0) # Initial velocity (m/s)
dt = 0.01 # Time step (s)코드를 입력하세요
맞습니다. parameter 부분에서 초기 속도값만 조정해주면 됩니다.
initial_velocity = vector(0, 0, 0)
x, y, z 성분이 모두 0으로 설정되어 있습니다.
저는 x 방향 속도 성분을 아래와 같이 5으로 수정해보겠습니다.
initial_velocity = vector(5, 0, 0)
전체 작성한 코드는 아래를 참고해주세요.
from vpython import *
# 초기 설정
scene = canvas(title='3D Ball Simulation', width=800, height=600, center=vector(0, 0, 0), background=color.white)
# 공 생성
ball = sphere(pos=vector(0, 5, 0), radius=0.5, color=color.red, make_trail=True, trail_color=color.blue)
ground = box(pos=vector(0, -1, 0), size=vector(10, 0.1, 10), color=color.green)
# 물리 변수 초기화
initial_velocity = vector(5, 0, 0) # 초기 속도 (x방향으로 약간의 속도 추가)
g = vector(0, -9.8, 0) # 중력 가속도
dt = 0.01 # 시간 간격
# 애니메이션 루프
while ball.pos.y >= ground.pos.y + ball.radius:
rate(100) # 초당 프레임 수
# 속도 업데이트 (중력 고려)
initial_velocity += g * dt
# 위치 업데이트
ball.pos += initial_velocity * dt
지난 시간에 작성한 코드랑 약간 다르죠. 그 의미를 하나씩 해석해보세요.
🎨 실험 결과

이번에는 경로를 파란색 선으로 표시해 보았습니다.