[PYTHON] 파이썬 예제코드입니다 - vpython(3) 1자유도 스프링-질량계 애니메이션2, 1DOF mass-spring system

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

 

1자유도계 스프링-질량계 애니메이션

위의 조건을 바탕으로
1자유도계 스프링-질량계(1DOF Spring-Mass System)와 운동에너지, 탄성에너지, 역학적에너지를  애니메이션화 하는 코드를 작성하시오. 
단 마찰력은 무시한다

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
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
# code from https://youtu.be/UoN70GjnBTI
from visual import *
 
#------------------------------------------------------------------
# 그래픽 그려주는 코드
#------------------------------------------------------------------
= 0.5         # 질량
= 20.0        # 강성
v0 = 4.0        # 초기속도
 
# 마찰력을 고려할 때 사용하는 코드 (현재 사용 안함)
#mu_k = 0.1
#mu_s = 0.5
#g = 9.81
 
# 그래픽창을 생성하고 벽을 생성합니다
scene = display(width=600, height=600, background=(0.5,0.6,0.5))
bottom = box(length=3, height=0.01, width=1, material=materials.silver)
wall = box(length=0.01, height=0.5, width=1, material=materials.silver)
 
 
# 물체와 스프링을 생성합니다. 물체의 초기 위치는 0.2m입니다
square = box(length=0.2, height=0.2, width=0.2, material=materials.wood)
spring = helix(pos=(-bottom.length/20,0), coils=15, radius=0.08,  thickness=0.02)
 
 
# 바닥과 벽의 위치를 정해주고 초기속도 v0를 입력합니다
bottom.pos = (0-square.height/20)
wall.pos = (-bottom.length/20.5/2-square.height/20)
square.vx = v0
 
 
# 운동에너지, 탄성에너지, 역학적에너지를 표현하는 바를 생성합니다
rod_k = cylinder(pos=(-bottom.length/2-0.5,0), axis=(0.1,0,0), radius=0.05, opacity=0.5)
rod_u = cylinder(pos=(-bottom.length/2-0.7,0), axis=(0.1,0,0), radius=0.05, opacity=0.5)
rod_e = cylinder(pos=(-bottom.length/2-0.9,0), axis=(0.1,0,0), radius=0.05, opacity=0.5)
 
 
# 텍스트 표시용 라벨 객체 생성
label_k = label(pos=(-bottom.length/2-0.1-0.50), text='K')
label_u = label(pos=(-bottom.length/2-0.1-0.70), text='U')
label_e = label(pos=(-bottom.length/2-0.1-0.90), text='E')
label1 = label()
label2 = label()
label3 = label()
 
#------------------------------------------------------------------
# 애니메이션 코드 
#------------------------------------------------------------------
 
dt = 0.0001
 
while True:
    rate(2000)  # 2000 hz의 속도로 루프를 돕니다 (dt가 매우 작으므로 실제로는 조금 더 느리게 루프가 돕니다)
 
    # 운동방정식을 통해 가속도를 구하고
    square.a = -(k/m) * square.pos.x
 
# 마찰력을 고려할 때 아래의 코드를 주석해제하면 됩니다
#   if square.vx * (square.vx + square.a*dt) > 0:
#       square.a = (-k/m)*square.pos.x - mu_k*g*abs(square.vx)/square.vx
#   elif abs(k*square.pos.x) > mu_s*m*g:
#       square.a = -(k/m)*square.pos.x
#   else:
#       square.a = 0
 
    # 속도와 위치도 구합니다
    square.vx += square.a*dt
    square.pos.x += square.vx*dt
 
    # 스프링의 길이를 계산합니다
    spring.length = (square.pos.x - square.length/2- spring.pos.x
 
    # 운동에너지, 탄성에너지, 역학적에너지를 표시합니다
    rod_k.axis.x = 0.5*m*square.vx**2/5    # 왜 5로 나누지? 스케일을 줄이기 위해!
    rod_u.axis.x = 0.5*k*square.pos.x**2/5
    rod_e.axis.x = rod_k.axis.x + rod_u.axis.x
 
    label1.pos = bottom.pos + vector(0,-0.1,0)
    label1.text = 'box position is : %.2f' % square.pos.x
    label2.pos = bottom.pos + vector(0,-0.3,0)
    label2.text = 'box length is : %.2f ' % square.length
    label3.pos = bottom.pos + vector(1.2,-0.1,0)
    label3.text = 'm : %.2f kg, k : %.2f N/m' % (m,k)
 
Colored by Color Scripter

                     [출처] https://m.blog.naver.com/gyurse/221033327080

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
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 806
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 1057
22 [PYTHON] 파이썬 예제코드입니다 - vpython(6) 단진자의 운동 애니메이션, simple pendulum file 졸리운_곰 2020.05.25 4014
21 [PYTHON] 파이썬 예제코드입니다 - vpython(5) 3자유도 스프링-질량계 애니메이션, 3DOF mass-spring system file 졸리운_곰 2020.05.25 357
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
» [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 757
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