[PYTHON] 파이썬 예제코드입니다 -

vpython(6) 단진자의 운동 애니메이션, simple pendulum 

제가 프로그래밍을 공부하기 위해 작성한 코드입니다
혹시 비슷한 분야를 공부하시는 분들은 허접한 코드지만 참고해서 봐주세요~
코드는 대부분 여러 고수님들의 코드를 참고해 작성했습니다 :-)

단진자의 운동 애니메이션 (줄의 길이가 2m이므로 속도가 조금 느리게 보입니다.)

 

위의 조건을 바탕으로
단진자의 운동을 애니메이션화하는 코드를 작성하시오. 

(단진자의 x방향 속도를 화살표로 나타내시오)

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
from visual import *
from math import *
 
#------------------------------------------------------------------
# 그래픽 그려주는 코드
#------------------------------------------------------------------
 
# 그래픽창을 설정하는 코드
scene.range = (3.5,3.5,3.5)
scene.center = (0,-1,0)
scene.width = 400
scene.height = 700
 
# 단진자와 이를 받쳐주는 바닥과 봉, 단진자의 실을 생성합니다
ball = sphere(pos=(0,0,0), radius=0.15, color=color.blue, opacity=0.8)
base = box(pos=(0,-2.5,-1), size=(2,0.1,2))
wall = box(pos=(0,-1,-1), size=(0.1,3,0.1))
bar = cylinder(pos=(0,0,-1), radius=0.05, axis=(0,0,1), color=color.yellow)
line = curve(pos=[(bar.pos),(ball.pos)], color=color.gray(0.5))
 
# 속도를 가시화하기 위한 화살표객체를 생성합니다
velArrow = arrow(pos=ball.pos, axis=(0,0,0) , color=color.yellow)
velFlag = 1
 
pi = 3.14159  # pi 값
= 2.        # 실의 길이 m
theta0 = 60   # 초기각도 (deg)
theta = (180 - theta0)*pi / 180  # 초기각도 (rad)
= 9.81                        # 중력가속도
 
omega = 0   # 각속도
alpha = 0   # 각가속도
= 0       # 가속도
= 0       # 속도
v_max = sqrt(2*g*r*(-cos(theta)))   # 초기각도에서의 속도의 최대값을 운동에너지 = 위치에너지로 구합니다
 
 
#------------------------------------------------------------------
# 애니메이션 코드
#------------------------------------------------------------------
 
= 0
dt = 0.01
deg_theta = 0
 
# 텍스트를 위한 라벨 객체를 생성합니다
label1 = label()
label2 = label()
label3 = label()
 
while True:
    rate(100)
    t += dt
 
    # 운동방정식으로 각가속도를 계산하고 이를 적분해 각속도,각도를 얻습니다
    alpha = (g*sin(theta))/r
    omega += alpha*dt
    theta += omega*dt
 
    # 각도를 deg단위로 변환합니다
    deg_theta = 180 - theta*180./pi
 
 
    # x축 방향의 속도를 계산합니다 
    # 실제속도 = 속도의 최대값 - 현재각도에서 속도값(위치에너지에 따른)
    # pi - theta인 이유는 0도가 y축의 양의 방향이고 이 방향이 수직 윗방향이기 때문에 pi를 빼준겁니다. (자세한건 직접해보세요~)
    v = v_max - sqrt(2*g*r*(1-cos(pi - theta)))
 
 
    # 줄의 위치와 공의 위치를 업데이트합니다
    line.pos = [(bar.pos)+(0,0,1), (ball.pos)] 
    ball.pos = (r*sin(theta), r*cos(theta), 0)
 
    # 속도화살표를 업데이트합니다. 각도에 따라 방향이 바뀌어야되므로 조건문을 추가합니다. 또한 속도값이 너무 크므로 0.3배로 화살표를 작게만들어줍니다
    velArrow.pos = ball.pos
    if velFlag == 0:
        velArrow.axis = (v*0.3,0,0)    
    else:
        velArrow.axis = (-v*0.3,0,0)
    
    # 속도화살표의 방향을 바꾸기 위한 조건문
    if deg_theta >= theta0 - 0.01:
            velFlag = 1
    elif deg_theta <= -theta0 + 0.01:
            velFlag = 0
 
    # 텍스트 데이터
    label1.pos = base.pos + vector(0,-0.5,0)
    label1.text = 'theta : %.2f deg' % (deg_theta)
    label2.pos = base.pos + vector(0,-0.1,0)
    label2.text = 'time : %.2f s' % (t)
    label3.pos = base.pos + vector(0,-0.9,0)
    label3.text = 'vel_x : %.2f m/s' % (v)
 
Colored by Color Scripter

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
32 (엑셀을 이용한) 천체물리학의 이해 secret 졸리운_곰 2023.12.02 0
31 [(응용)수학] Why does ∫∞0e−t2cos(at)dt=12π−−√e−a2/4∫0∞e−t2cos⁡(at)dt=12πe−a2/4 hold? file 졸리운_곰 2022.11.08 15
30 [전산물리학] science-physics package on Ubuntu 20.04 LTS (Focal Fossa) 졸리운_곰 2022.02.22 43
29 [전산물리학] 15 Best Free Linux Physics Tools file 졸리운_곰 2022.02.22 36
28 [전산물리학] Debian Science Physics packages 졸리운_곰 2022.02.22 48
27 Mathematica를 처음 시작할 때 기초! file 졸리운_곰 2022.02.16 81
26 [PYTHON] 파이썬 예제코드입니다 - vpython(10) 2자유도 반한정계 스프링-질량 애니메이션, 2DOF mass-spring system file 졸리운_곰 2020.06.10 809
25 [PYTHON] 파이썬 예제코드입니다 - vpython(9) 2자유도 스프링-질량계 애니메이션2, 2DOF mass-spring system file 졸리운_곰 2020.06.10 650
24 [PYTHON] 파이썬 예제코드입니다 - vpython(8) 2자유도 스프링-질량계 애니메이션, 2DOF mass-spring system file 졸리운_곰 2020.05.27 327
23 [PYTHON] 파이썬 예제코드입니다 - vpython(7) 공의 자유낙하 애니메이션2, free-fall file 졸리운_곰 2020.05.27 1058
» [PYTHON] 파이썬 예제코드입니다 - vpython(6) 단진자의 운동 애니메이션, simple pendulum file 졸리운_곰 2020.05.25 4019
21 [PYTHON] 파이썬 예제코드입니다 - vpython(5) 3자유도 스프링-질량계 애니메이션, 3DOF mass-spring system file 졸리운_곰 2020.05.25 361
20 3D programming with Vpython file 졸리운_곰 2020.05.10 148
19 [PYTHON] 파이썬 예제코드입니다 - vpython(4) 진자의 등속원운동 애니메이션, uniform circular motion file 졸리운_곰 2020.05.10 669
18 [PYTHON] 파이썬 예제코드입니다 - vpython(5) 3자유도 스프링-질량계 애니메이션, 3DOF mass-spring system file 졸리운_곰 2020.05.10 239
17 [PYTHON] 파이썬 예제코드입니다 - vpython(3) 1자유도 스프링-질량계 애니메이션2, 1DOF mass-spring system file 졸리운_곰 2020.05.10 300
16 [PYTHON] 파이썬 예제코드입니다 - vpython(2) 공의 자유낙하 애니메이션, free-fall file 졸리운_곰 2020.05.10 1181
15 [PYTHON] 파이썬 예제코드입니다 - vpython(1) 1자유도 스프링-질량계 애니메이션, 1DOF mass-spring system file 졸리운_곰 2020.05.10 762
14 Computational Physics, 2ed, Giordano, Nakanishi (2005).pdf file 졸리운_곰 2020.03.24 84
13 http://www.physics.purdue.edu/~hisao/book/www/samples.html 졸리운_곰 2020.03.24 74
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED