Advertisement
James1337

Planetary Gravity Calculator

Jun 14th, 2014
425
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 1.46 KB | None | 0 0
  1. #NoTrayIcon
  2.  
  3. ; Planetary Gravity Calculator
  4. ; http://redd.it/284mep
  5.  
  6. Global $Form, $idInput, $idOutput, $idButton
  7. $Form = GUICreate("Planetary Gravity Calculator", 640, 360)
  8. GUISetFont(10, 1000, 0, "Courier New", $Form)
  9. $idInput = GUICtrlCreateEdit("Input", 20, 20, 300, 300)
  10. $idOutput = GUICtrlCreateEdit("", 320, 20, 300, 300)
  11. $idButton = GUICtrlCreateButton("Calculate", 200, 320, 120, 20)
  12. GUISetState(@SW_SHOW, $Form)
  13.  
  14. Do
  15.     Switch GUIGetMsg()
  16.         Case -3
  17.             ExitLoop
  18.         Case $idButton
  19.             GUICtrlSetData($idOutput, Calculate(GUICtrlRead($idInput)))
  20.     EndSwitch
  21. Until False
  22. Exit
  23.  
  24. Func Calculate($sInput)
  25.     Local Static $pi = ACos(-1)
  26.     Local $sOutput = "", $aInput, $i
  27.     Local $G = 6.67e-11, $nMass
  28.     Local $aPlanet, $nMassP, $nForce
  29.  
  30.     $aInput = StringSplit($sInput, @CRLF, 1)
  31.     ; $aInput[0] = number of lines
  32.     ; $aInput[1] = M
  33.     ; $aInput[2] = N
  34.     ; $aInput[3] = planet #1
  35.     ; ...
  36.     If ($aInput[0] < 3) Then Return "invalid Input"
  37.     If ($aInput[0] <> $aInput[2]+2) Then Return "invalid Input, please check N"
  38.     $nMass = $aInput[1]
  39.     For $i = 3 To $aInput[0]
  40.         $aPlanet = StringRegExp($aInput[$i], "^\h*(\w+)\h*,\h*(\d+)\h*,\h*(\d+)\h*$", 3)
  41.         If @error Then Return "invalid Input, please check line " & $i
  42.         ; $aPlanet[0] = name
  43.         ; $aPlanet[1] = radius
  44.         ; $aPlanet[2] = density
  45.         $nMassP = 4/3 * $pi * $aPlanet[1]^3 * $aPlanet[2]
  46.         $nForce = $G * ($nMass * $nMassP) / $aPlanet[1]^2
  47.         $sOutput &= $aPlanet[0] & ": " & $nForce & @CRLF
  48.     Next
  49.     Return $sOutput
  50. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement