수평으로 던진 물체의 운동

박종곤·2024년 6월 18일

이번 시간에는 수평으로 던진 물체의 운동 시뮬레이션을 해보겠습니다.

기존에 작성된 코드에서 어떤 부분을 수정하면 될까요?

맞습니다.

# 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

지난 시간에 작성한 코드랑 약간 다르죠. 그 의미를 하나씩 해석해보세요.

🎨 실험 결과

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

profile
프로그래밍에 관심 있는 교사...

0개의 댓글