일반역학 [PYTHON] 파이썬 예제코드입니다 - vpython(2) 공의 자유낙하 애니메이션, free-fall
2020.05.10 21:24
[PYTHON] 파이썬 예제코드입니다 - vpython(2) 공의 자유낙하 애니메이션, free-fall
제가 프로그래밍을 공부하기 위해 작성한 코드입니다
혹시 비슷한 분야를 공부하시는 분들은 허접한 코드지만 참고해서 봐주세요~
코드는 대부분 여러 고수님들의 코드를 참고해 작성했습니다 :-)
위 조건을 기준으로
공이 27m 높이에서 자유낙하하는 애니메이션 코드를 작성하시오 (공의 질량은 무시한다)
바닥과 공은 완전탄성충돌을 한다.
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# code from https://youtu.be/H8CzQtx9vds
from visual import * from math import * # 공과 바닥을 생성합니다. 공의 위치는 지면으로부터 18 + 9 = 27m 위에 있습니다. (vpython은 y축이 위아래방향입니다) ball = sphere(pos=(-5,18,0), radius=1, color=color.green) bottom = box(pos=(0,-9,0), size=(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의 속도로 루프를 실행합니다 # 공식을 사용해 속도와 위치를 계산합니다 v += g*dt y += v*dt + 0.5*g*dt**2 # 바닥에 닿는 순간 속도의 크기는 그대로하고 방향을 바꿉니다 # 완전탄성충돌 if ball.pos.y < (bottom.pos.y + 1): v.y = -v.y # 공의 위치와 궤적을 업데이트합니다 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 Colored by Color Scripter |
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.