1 문제
위의 조건을 바탕으로 공이 27m 높이에서 자유낙하하는 애니메이션 코드를 작성하시오. 공의 질량은 무시하며 바닥과 공은 완성탄성충돌을 한다.
2 코드
# code from https://youtu.be/H8CzQtx9vds
from vpython import * # 7.6.2
from math import *
# 공과 바닥을 생성합니다. 공의 위치는 지면으로부터 18 + 9 = 27m 위에 있습니다. (vpython은 y축이 위아래방향입니다)
ball = sphere(pos=vector(-5,18,0), radius=1, color=color.green)
bottom = box(pos=vector(0,-9,0), size=vector(25,0.5,25))
# 초기속도는 x방향으로 0.7 m/s
v = vector(0.7, 0,0)
y = ball.pos
g = vector(0, -9.81, 0)
# 공의 궤적을 그래픽화하고 속도의 크기를 화살표로 그래픽화합니다
ball.trail = curve(color=ball.color)
arrow = arrow(pos=ball.pos, axis=v, color=color.yellow)
# 속도를 표시할 라벨 객체를 생성합니다
label1 = label()
dt = 0.005
t = 0.0
while True:
rate(300) # 300 Hz의 속도로 루프를 실행합니다
# 바닥에 닿는 순간 속도의 크기는 그대로하고 방향을 바꿉니다
# 완전탄성충돌
if ball.pos.y < (bottom.pos.y + 1):
v.y = -v.y
# 공식을 사용해 속도와 위치를 계산합니다
v += g*dt
y += v*dt + 0.5*g*dt**2
# 공의 위치와 궤적을 업데이트합니다
ball.pos = y
ball.trail.append(pos = ball.pos)
# 속도 화살표를 설정합니다
arrow.pos = ball.pos
arrow.axis = v*0.3
label1.pos = bottom.pos + vector(0,-0.5,0)
label1.text = 'v is : %.2f m/s' % v.y
'Coding' 카테고리의 다른 글
VPython 예제6 - 단진자의 운동 애니메이션 (0) | 2022.01.11 |
---|---|
VPython 예제5 - 3자유도 스프링-질량계 애니메이션 (0) | 2022.01.11 |
VPython 예제4 - 진자의 등속원운동 애니메이션 (0) | 2022.01.11 |
VPython 예제3 - 1자유도 스프링-질량계 애니메이션(2) (0) | 2022.01.11 |
VPython 예제1 - 1자유도 스프링-질량계 애니메이션 (2) | 2022.01.11 |