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

 

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

위의 조건을 바탕으로
1자유도계 스프링-질량계(1DOF Spring-Mass System)를 애니메이션화 하는 코드를 작성하시오

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
code from https://www.youtube.com/watch?v=c3tX_qReGIM
from visual import *
 
#-----------------------------------------------------------------
# 그래픽 그려주는 코드
#------------------------------------------------------------------
 
= 9.81  # 중력가속도 9.81 m/s^2
 
# 화면 객체를 생성합니다. backgroun 색과 카메라 center 포인트를 설정한다
scene = display(background = (0.360.470.23), center = vector(0-0.7-0.5))
 
# 천장의 물체를 생성합니다. 재질은 wood이고 색깔은 orange입니다.
ceiling = box(length = 1, width = 1, height = 0.01, material = materials.wood, color = color.orange)
 
# ball을 생성합니다. 
# 반지름은 0.1m
# 초기 위치는 y방향으로 -0.5m입니다. (vpython에서는 y방향이 밑방향입니다)
# 질량은 0.5kg
# 초기속도는 0입니다
ball = sphere(radius = 0.1, color = color.green, opacity=0.8)
ball.pos = vector(0-0.50)
ball.m = 0.5
ball.v = vector(0,0,0)
 
# 스프링을 생성합니다. 코일 수는 15번, radius(반지름)와 thickness(두께)를 설정합니다 
# 길이는 천장에서 ball까지로 설정합니다
spring = helix(coils = 15, radius = 0.05, thickness = 0.01)
spring.pos = ceiling.pos
spring.axis = ball.pos - spring.pos
 
# spring.L에는 초기 ball의 위치값이 들어갑니다. (여기서는 0.5m로 고정됩니다)
# 스프링상수는 10 N/m입니다
spring.L = abs(ball.pos)
spring.k = 10.0
 
# 텍스트를 표시하는 라벨객체를 생성합니다
label1 = label()
label2 = label()
label3 = label()
 
 
# 스프링의 힘을 리턴하는 함수
def spring_F(spring):
    return -spring.k * (spring.length - spring.L) * spring.axis.norm()
 
 
#------------------------------------------------------------------
# 애니메이션 코드 
#------------------------------------------------------------------
 
dt = 0.01
= 0
 
while True:
    rate(100)           # [Hz] 만큼 루프를 지연시킵니다
 
    F = spring_F(spring)      # 힘을 구해서 F 변수에 저장
 
    ball.a = vector(0-g, 0+ F / ball.m   # 가속도
    ball.v += ball.a * dt                    # 속도
    ball.pos += ball.v  * dt                 # 위치
 
    spring.axis = ball.pos - spring.pos   # 스프링이 공을 따라가게 하기 위한 코드
 
    t += dt
 
    # 위치, 속도, 가속도를 표시합니다
    label1.pos = ceiling.pos + vector(0.5,0.2,0)
    label1.text = ('position is : %1.2f' % ball.pos.y)
    label2.pos = ceiling.pos + vector(0.5,0.05,0)
    label2.text = ('velocity is : %1.2f' % ball.v.y)
    label3.pos = ceiling.pos + vector(0.5,-0.10,0)
    label3.text = ('acc is : %1.2f' % ball.a.y)
 
    #if ball.v.y >= 0 and ball.v.y + ball.a.y * dt <= 0:
     #   print (t)

Colored by Color Scripter



vpython은 3D Visualization을 쉽게 할 수 있는 패키지입니다. 이를 활용하면 여러가지 공학적인 움직임에 대해 쉽게 애니메이션화 할 수 있습니다. 최근에 알았는데 매우 간편하게 사용할 수 있어 좋드라구요 :-)



3D 그래픽툴이므로 마우스를 사용해  각도를 조정할 수 있고 원하는 방향에서 볼 수 있습니다.

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

마우스 휠 클릭 상태로 마우스 이동   ==>   줌인, 줌아웃
마우스 우클릭 상태로 마우스 이동    ==>   각도 변경






설치는 공식홈페이지에서 다운받으시면 됩니다. 
http://vpython.org/contents/download_windows.html
윈도우, 리눅스, 맥을 다 지원합니다. 하지만 python 3.x 버전은 아쉽게도 공식적으로 지원하지는 않는것 같네요. 2.x 버전에서 정상작동하는 것 확인했습니다  (2017.6 기준)




좋은 참고자료 사이트 추천드립니다. 중국사이트들이 많네요. 저도 중국어는 몰라서 한/중 구글번역 돌리고 필요한 코드들만 따와서 사용하고 있습니다 :-)

vphysics라는 중국 교육사이트인 것 같습니다. 다양한 예제들이 많아서 제일 많이 참고한 좋은 사이트입니다 :-)
http://tcjd71.wixsite.com/vpython/blank-c1iws

TW쭌님의 블로그입니다. vpython 관련 참고 사이트들을 많이 링크해주셔서 많은 도움이 되었습니다!
http://blog.naver.com/PostView.nhn?blogId=junix&logNo=220498150208&beginTime=0&jumpingVid=&from=section&redirect=Log&widgetTypeCall=true

기타 유튜브 영상들입니다.  이 또한 좋은 참고자료가 되었습니다
https://www.youtube.com/watch?v=c3tX_qReGIM           
https://www.youtube.com/watch?v=9Hf6kfU9KCg
https://www.youtube.com/watch?v=9n8XCwCmBho
https://youtu.be/H8CzQtx9vds
https://youtu.be/UoN70GjnBTI

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

 

 

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