관리 메뉴

지구별에서 - Things Old and New

해와 달 그리고 떠돌이별들 본문

IT/Flex 3.0

해와 달 그리고 떠돌이별들

샛솔 2009. 1. 27. 19:12

이 글은 2006-08-23 10:56:36 에플래시 클럽 에 올렸던 글이다.  

이것이 전산물리학회에 가기 전에 만든 Flex2.0 마지막 프로그래밍이다.

 

Flex3.0 프로그래밍 강좌를 위해 여기에 다시 가져 왔다.

 

 

 

해와 달 그리고 떠돌이별들

 

 


 

 

 

플래시로 꼭 한번 해 보려던 것이 태양계를 시늉내는 것이었습니다.  그러나 AS3 이 나오기 전까지는 플래시의 속도가 느려서 태양계를 시늉내기는 어려웠을 것입니다.

사실 태양계의 주성을 태양까지 10개인데  달이 비록 떠돌이 별은 아니라 해도 우리에게는 태양 다음 밝은 천체이니 포함시키지 않을 수 없지요 그러니  모두 11개가 됩니다.  내일 열리는  국제천문학 연맹 (International Astronomical Union)에서 3개의 떠돌이 별을 추가할 가능성이 많아졌으니 그것 까지 포함시키면 모두 14개의 질량체가 됩니다.  

이들이 모두 중력 서로작용을 하고 있으니  각각의 질량체는 13개의 다른 질량체의 중력을 받는 셈입니다.  이 힘에 의해서 일어나는 운동을 미분 방정식을 풀어서 자리길을 계산해 낸다는 것은 엄청난 계산량이 됩니다.  따라서 플래시 AS2.0으로는 꿈꾸기 힘든 상황이었습니다.  

AS3.0은 가능할까?  

가능하다는 것을 알게 되었습니다.   AS3.0의 가능성이 무진장이라는 말을 했지요.  사실입니다.  

이번 시늉내기 미니 태양계는 수금지화목토 성에 해와 달 까지 넣어 8체 문제를 다루었습니다.  전에 전산물리를 가르칠 때 Java로 시범 풀그림으로 태양계를 시늉내었었는데 그때에는 목성까지만  넣고 달은 빼었었으니 그 때 보다 달과 토성의 2체가 더 는 셈입니다.  

이번 시늉내기의 가장 큰 특성은 초기상태의 정확한 데이터를 사용할 수 있었다는 점입니다.  NASA 가 운영하는 JPL(Jet Propulsion Lab)에서는 태양계의 정확한 데이타를 무료로 제공합니다.  

그래서 이번 전산물리 학회 강연 날자의 태양계의 데이타를 초기 조건으로 하여 시늉내기를  만들었습니다.

여러가지 테스트 결과 보전량인 총 에너지,  각운동량 3 성분을 모니터한 결과로 얻은 RK4 미방해법의 시간 스텝을 1시간 3600초로 잡았어도 큰 무리가 없었습니다.  그리고 프래임 당 24 스텝 그러니까 정확히 1일의 움직임을 시늉내었습니다.   2006년 8월 31일 오전 9시(GMT+9000 )의 미니 태양계의 역학 상태에서 시작하여 이 미니 태양계는 운동을 시작하여 Stop 버튼을 누를 때까지 운동합니다.   그리고 그 정지한 시점의 일시를 보여 줍니다.

이 미니 태양계는 모델처럼 만들었습니다.   Isometric view 에다 그림자를 넣어 높이를 가늠할 수 있게 하였습니다.   보통은 perspective를 넣어서 멀리 가는 것을 작게 보이게 하여 3차원 시늉을 내지만 자리표 없이 어두운 공간에 공을 그린다는 것은 거의 의미가 없읍니다.

이 시늉내기에서 목성 토성, 달을 빼고는  모두 1 픽셀이  2백만 킬로 미터에 해당되는 스케일로 그렸습니다.   목성과 토성을 포함시키기 위해 목성은 거리 스케일을 1/3 로 줄였고 토성은 1/5 로 줄였습니다. 그리니까 토성은 이 시늉내기에서 보이는 거리의 5배로 태양에서 멀리 떨어져 있습니다.  

이 시늉내기에서 목성과 토성이 느리게 움직여 보이는 이유는 이 인위적인 스케일 때문입니다.  제대로 된 스케일이면 3배 5배로 빠를 것입니다.

  또 달은 지구에 너무 가까이 있어 같은 스케일로 그릴 수 없어 100배 늘려 그렸습니다. 그리니까 모델에서 보이는 거리의 1/100 이 실제 지구에서의 거리입니다. 여기에  다른 천체와 같은 스케일로 그리면 지구와 같은 점이 되어 버립니다.

풀그림은 이미 다 설명한 바 있는 내용입니다.  3차원 그리기는 이미 "Isometric view",  "빛과 그리고 그림자"에  RK4 는 "바보들을 위한 미방" 과 이어진 강좌에서 그리고 중력 서로 작용의 문제는 "떠돌이별의 운동" 에서 자세히 설명 드렸읍니다.  

AS3 특유의 새로운 내용은 새 depth management 기법입니다.  전산물리 학회가 끝나면 천천히 설명 드리겠습니다.  

강좌를 읽어 주셔서 감사합니다.

부록 초기 상태의 데이타

Vectors  Km, Km/s

Sun
2453978.500000000 = A.D. 2006-Aug-31 00:00:00.0000 (CT)
X = 0.000000000000000E+00 Y = 0.000000000000000E+00 Z = 0.000000000000000E+00
VX= 0.000000000000000E+00 VY= 0.000000000000000E+00 VZ= 0.000000000000000E+00

2454027.500000000 = A.D. 2006-Oct-19 00:00:00.0000 (CT)
X = 0.000000000000000E+00 Y = 0.000000000000000E+00 Z = 0.000000000000000E+00
VX= 0.000000000000000E+00 VY= 0.000000000000000E+00 VZ= 0.000000000000000E+00

Mercury
2453978.500000000 = A.D. 2006-Aug-31 00:00:00.0000 (CT)
X =-4.656646942490446E+07 Y = 2.388755607970573E+07 Z = 6.224910433736013E+06
VX=-3.224482514504295E+01 VY=-4.128465596918252E+01 VZ=-4.138068385701885E-01

2454027.500000000 = A.D. 2006-Oct-19 00:00:00.0000 (CT)
X = 4.095025367510563E+07 Y =-4.756466553370416E+07 Z =-7.643889233724162E+06
VX= 2.723358304612402E+01 VY= 3.412364873634338E+01 VZ= 2.886471685155101E-01

Venus
2453978.500000000 = A.D. 2006-Aug-31 00:00:00.0000 (CT)
X =-5.462745529812206E+07 Y = 9.246768282459620E+07 Z = 4.418218840158559E+06
VX=-3.027203183831064E+01 VY=-1.800605855426683E+01 VZ= 1.500799946800666E+00

2454027.500000000 = A.D. 2006-Oct-19 00:00:00.0000 (CT)
X =-1.012820942450337E+08 Y =-3.693780651054496E+07 Z = 5.340178102913741E+06
VX= 1.176203397382913E+01 VY=-3.305967021603297E+01 VZ=-1.131250378523294E+00

Earth
2453978.500000000 = A.D. 2006-Aug-31 00:00:00.0000 (CT)
X = 1.394079297299942E+08 Y =-5.808987662689899E+07 Z = 1.103829489812255E+03
VX= 1.096315833230429E+01 VY= 2.739085656828412E+01 VZ= 5.218572603382654E-05

2454027.500000000 = A.D. 2006-Oct-19 00:00:00.0000 (CT)
X = 1.346492558310886E+08 Y = 6.386068356105489E+07 Z =-1.193455289136618E+03
VX=-1.324884123955707E+01 VY= 2.681458909140181E+01 VZ= 6.681153393639505E-04

Moon
2453978.500000000 = A.D. 2006-Aug-31 00:00:00.0000 (CT)
X = 1.391892475844499E+08 Y =-5.841728941449566E+07 Z =-3.066210774254799E+04
VX= 1.181712152125688E+01 VY= 2.688998914755920E+01 VZ=-3.968845538769727E-02

2454027.500000000 = A.D. 2006-Oct-19 00:00:00.0000 (CT)
X = 1.342489279218244E+08 Y = 6.392828272990467E+07 Z = 1.851278635684401E+03
VX=-1.341409730480903E+01 VY= 2.586361036417885E+01 VZ=-8.735248296661524E-02

Mars
2453978.500000000 = A.D. 2006-Aug-31 00:00:00.0000 (CT)
X =-2.449852977829843E+08 Y =-2.213965291399480E+07 Z = 5.554334154690327E+06
VX= 3.085741667754069E+00 VY=-2.206147012938125E+01 VZ=-5.380527012458254E-01

2454027.500000000 = A.D. 2006-Oct-19 00:00:00.0000 (CT)
X =-2.125490330522144E+08 Y =-1.112056563053284E+08 Z = 2.891355715446621E+06
VX= 1.214002704062227E+01 VY=-1.939854748284263E+01 VZ=-7.046689877719707E-01

Jupiter
2453978.500000000 = A.D. 2006-Aug-31 00:00:00.0000 (CT)
X =-4.858829634313659E+08 Y =-6.446397166545756E+08 Z = 1.354883908805799E+07
VX= 1.027886068158904E+01 VY=-7.255886070799312E+00 VZ=-1.999309894703085E-01

2454027.500000000 = A.D. 2006-Oct-19 00:00:00.0000 (CT)
X =-4.412920183868400E+08 Y =-6.738746087994304E+08 Z = 1.267237999132797E+07
VX= 1.077748968529709E+01 VY=-6.548330491741995E+00 VZ=-2.139605303609002E-01

Saturn
2453978.500000000 = A.D. 2006-Aug-31 00:00:00.0000 (CT)
X =-9.783510734541842E+08 Y = 9.574791593359984E+08 Z = 2.226350198371911E+07
VX=-7.266762358286020E+00 VY=-6.932942266105382E+00 VZ= 4.105005792404426E-01

2454027.500000000 = A.D. 2006-Oct-19 00:00:00.0000 (CT)
X =-1.008656789111779E+09 Y = 9.276951449388936E+08 Z = 2.398812901606554E+07
VX=-7.048403399320413E+00 VY=-7.138480148569037E+00 VZ= 4.053184882737213E-01

//***********************************

Masses:

Sun
Mass (10^30 kg)       =    1.9891

Mercury
Mass (10^23 kg )      =     3.302

Venus
Mass (10^23 kg )      =     48.685

Earth
Mass, 10^24 kg = 5.9736

Moon
Mass, 10^20 kg        =  734.9

Mars
Mass (10^23 kg )      =    6.4185

Jupiter
Mass (10^24 kg)       =  1898.6

Saturn
Mass (10^26 kg)       = 5.68461037873


  

'IT > Flex 3.0' 카테고리의 다른 글

GradientFill - 급변하는 IT 세계  (0) 2009.01.30
Flex3.0 Project를 FlashDevelop에서 쓰는 법  (0) 2009.01.26
FlashDevelop3(FD3) 사용법  (0) 2009.01.25
무료 플래시 통합개발환경 구축하는 법  (0) 2009.01.25
Flex 3.0  (0) 2009.01.20
Comments