Page 1 of 1

Orbital Period Calculator

Posted: 05.06.2010, 03:04
by W0RLDBUILDER
I'm working on an orbital period calculator using Visual Basic 2008. I've figured out the equations, but I have no idea how to write the code (I'm a VB n00b.). Any help would be appreciated.

Re: Orbital Period Calculator

Posted: 05.06.2010, 13:14
by ajtribick
Do you want to set up a command-line application or one with a GUI? Windows Forms or WPF?

If you're trying to learn .Net coding, it might make more sense to start with a console application as may make it easier to figure out the nuts and bolts of the language without having to worry about setting up a GUI. There are probably quite a lot of good tutorials out there which should help you figure it out.

Re: Orbital Period Calculator

Posted: 05.06.2010, 15:19
by W0RLDBUILDER
Windows Form. The only thing I need it to do is to calculate a planet's orbital period with the following series of calculations:
S*S*S=T
T/T=P
P/M=R
where S is SemiMajorAxis, T is the SemiMajorAxis cubed, P is the period it would have around Sol, M is the parent star's mass, and R is the final result. The only reason for a GUI is for the user to be able to modify the two input variables. I've tried doing this in Excel, but I was hopelessly confused. I tried in POV-Ray, but it always returned 1.You can tell I'm a total n00b to VB. The only functional programs I've made are web browsers and all the rest were either useless collections of controls or simple drawings.
EDIT: Figured out how to do this in Excel.

Re: Orbital Period Calculator

Posted: 05.06.2010, 23:49
by W0RLDBUILDER

Re: Orbital Period Calculator

Posted: 06.06.2010, 09:50
by t00fri
What's the purpose of using such antiquated MS-specific code like VisualBasic and Exel??

It would be much more useful to write a short celx script (lua) for this exceedingly trivial formula. It's all there in Celestia and works in ALL operating systems for which Celestia is released!

A respective celx script could easily be integrated into Celestia, along with further results of interest based on the Kepler orbit approximation...In this way, it might be an educational excercise for people to compare the approximate, Kepler-based results directly with Celestia's more accurate internal orbit calculation

Notably, with celx, you may access Celestia's internal variables etc directly! Lua scripting may also be operated separately, after installation of the Lua package.

Fridger

Re: Orbital Period Calculator

Posted: 09.06.2010, 02:21
by VikingTechJPL
Here's a quick CELX script that gives the Periods of bodies orbitting our Sun. Pretty straightforward and easy to use. But, as mentioned in the code below, as I started extending it to all bodies in Celestia, I unfortunately encountered what seem to be problems with the CELX getinfo() method, which I'll post on the Bugs page.

Anyway, this at least it seems to work for any bodies in orbit around our Sun. But to extend it to all of Celestia's objects we need the mass of any parent body to determine the Gravitational Parameter [ G*(m1+m2) or simplified to G*m1 when orbiting objects are of low mass compared to the parent parent.]

Hope this helps.

-Gary

Code: Select all

-- ORBITAL PERIODS OF SOLAR SYSTEM PLANETS
--
--  a CELX script
--
--  by: Gary M. Winter.  © 2010.  All rights reserved.
-- 
--  for use with the incredible, free astronomy-simulation software
--  CELESTIA                     (www.shatters.net/celestia)
-- 
--  CELESTIA is by:
--      Chris Laurel, , Clint Weisbrod, Fridger Schrempp,
--      Christophe Teyssier, Grant Hutchison,  Pat Suwalski,
--      Toti, Da Woon Jung, Hank Ramsey, Bob Ippolito,
--      Vincent Giangiulio and Andrew Tribick.
--              versions 1.4.1 and before: © 2001-2006 Chris Laurel
--              later versions: © 2001-2009 Celestia Development Team
--
-- 
--  This script gives your distance from the Sun and tells you
--  the Period of any planet whose orbital semi-major axis equals
--  that distance.  Remember: as long as planets' masses are small
--  compared to that of their parent star, in a given star system two
--  planets with equal semi-major axes will have the same period; 
--  it doesn't matter how eccentric their orbits may be.  Therefore,
--  a planet in a highly elongated orbit with a semi-major axis of
--  2 AU will have the same period as one with a circular orbit with
--  a radius of 2AU.  A circular orbit is simply a special case where
--  the orbit's semi-major and semi-minor axes are the same.
-- 
--  Note for CELX programmers:
--  I started to extend this script to give orbital periods of all planets,
--  stars, moons etc. in Celestia but unfortunately found the following:
--  1)  Celestia's getinfo( ) method does not return a .mass key for stars;
--  2)  worse, even for planets and moons, getinfo( ) always returned zero
--        in its .mass key.
--
--  Code used for above:
--      Selection  = celestia : getselection ( )
--      SelectionTable = Selection : getinfo ( )
--      SelectionMass = SelectionTable.mass
--
--  ---------------------------------------------------------

--  BACKGROUND
--
--  1 AU = 149597869.4 km
--  mu = G ( m1 + m2 )    rigorously, the Gravitational Parameter
--  but m2 (the mass of planet, satellite, etc.) is usually very small compared to m1 (the mass of parent star, planet etc.)
--  so   mu = G*m1 is substituted

--  ---------------------------------------------------------

--  CONSTANTS

PI = 3.14159265359

--  ---------------------------------------------------------

--  FUNCTIONS

function celestia_cleanup_callback() 
        -- empty function
end


function ShowObjectPeriod( )       
        SunPosition = Bodies[1] : getposition ( celestia:gettime( ) )
        ViewerPosition = celestia : getobserver ( ) : getposition ( )
        SemiMajorAxisInAU = SunPosition:distanceto ( ViewerPosition ) / 149597869.4
       
        Period = math.sqrt( SemiMajorAxisInAU ^ 3 )

        DistanceString = string.format("  Your distance from the Sun is:  %5.6f AU.\n  A solar planet in an orbit with a \"semi-major axis\"\n  this large has a period of:  %5.6f Years.\n  Press the X key to eXit.", SemiMajorAxisInAU, Period )   
        celestia:print(DistanceString)       
end                              -- of  ShowObjectPeriod( )


function celestia_keyboard_callback(KeyPress)
        local TrapKey = false
   if KeyPress == "X"   or KeyPress == "x"  then
                TrapKey = true
   Exit = true
        end
        return TrapKey
end


--  ---------------------------------------------------------
--  START PROGRAM

Bodies = { }
Bodies[1] = celestia:find("Sol")

Exit = false

celestia:print("  ORBITAL PERIODS OF SOLAR SYSTEM PLANETS\n  © 2010 Gary M. Winter\n  All rights reserved.", 100 )   
for i=1, 4 do
   wait(0.7)
end                                   
celestia:requestkeyboard(true)

repeat
        wait(0)
        ShowObjectPeriod( )
until Exit

celestia:print("\n\n  Exiting \"ORBITAL PERIODS OF SOLAR SYSTEM PLANETS\" . . . May your journeys be joyous!", 3)

-- WE'RE DONE

Re: Orbital Period Calculator

Posted: 09.06.2010, 12:28
by duds26
OMG!! VB!?! COme on!!

Please use some decent language: C/C++. Of if you prefer scripting: Perl, Python, Lua.
And please use some decent toolkit: Qt Creator.

EDIT: added Perl, changed Qt addon for visual studio to Qt Creator.

Re: Orbital Period Calculator

Posted: 09.06.2010, 15:49
by t00fri
duds26 wrote:OMG!! VB!?! COme on!!

Please use some decent language: C/C++. Of if you prefer scripting: Python, Lua.
And please use some decent toolkit: Qt addon for Visual Studio.


The (Trolltech) Qt add-in for Visual Studio I know about works ONLY for the commercial version of Visual Studio, NOT for the Express version that the Celestia developer team uses throughout. For Qt stuff, we use the Qtcreator IDE, of course. It collaborates perfectly with the VS_Express compiler

Actually you can't be serious to even request Qt widgets for calculating a trivial one-line formula...
As I wrote above, a tiny lua script (coded and tested in 5 minutes) is just adequate for such a simple task.

Finally, why didn't you include Perl on the scripting side? ;-) That's what WE use at Celestia for ALL our extensive data related tasks (for good reasons). Perl is certainly a most powerful and modern (obejct oriented) cross-platform scripting language.

+++++++++++++
Besides your overflowing wise remarks, we would be glad seeing also some neat graphical code from YOU at times, ...
+++++++++++++

F.

Re: Orbital Period Calculator

Posted: 09.06.2010, 17:11
by ajtribick
Hang on a minute here let's not bash the beginning-level programmer over their choice of programming language. And let's bear in mind that VB.Net and VBA are very different beasts. Yes the vendor-specific nature of the .Net environment is not ideal (to put it politely), but the .Net environment is actually quite a nice one to work with.

Apparently "bash Microsoft and all who dare associate with it" trumps encouraging new programmers round here. I think that's a bit of a shame really.

Re: Orbital Period Calculator

Posted: 09.06.2010, 17:27
by t00fri
ajtribick wrote:Hang on a minute here let's not bash the beginning-level programmer over their choice of programming language. And let's bear in mind that VB.Net and VBA are very different beasts. Yes the vendor-specific nature of the .Net environment is not ideal (to put it politely), but the .Net environment is actually quite a nice one to work with.

Apparently "bash Microsoft and all who dare associate with it" trumps encouraging new programmers round here. I think that's a bit of a shame really.

I agree as to bashing beginning programmers. Yet, as I suggested above, a few lines of Lua for that trivial 3rd Kepler law formula does not seem requesting too much ... Notably since Lua is already there in every copy of Celestia ;-)

As to VB.Net etc, I can't see much of a justification for coding tools in such a language., given that they should be supporting cross-platform Celestia! As far as I know, VB.net only works for Windows, right?

Incidentally, there is a large amount of competent "anti-writing" against Microsoft's Net philosophy/environment. The latter doesn't seem to be REALLY "catching on" (despite massive PR-pressure from MS)

Fridger

Re: Orbital Period Calculator

Posted: 09.06.2010, 22:34
by Fenerit
t00fri wrote:
ajtribick wrote:Hang on a minute here let's not bash the beginning-level programmer over their choice of programming language. And let's bear in mind that VB.Net and VBA are very different beasts. Yes the vendor-specific nature of the .Net environment is not ideal (to put it politely), but the .Net environment is actually quite a nice one to work with.

Apparently "bash Microsoft and all who dare associate with it" trumps encouraging new programmers round here. I think that's a bit of a shame really.

I agree as to bashing beginning programmers. Yet, as I suggested above, a few lines of Lua for that trivial 3rd Kepler law formula does not seem requesting too much ... Notably since Lua is already there in every copy of Celestia ;-)

As to VB.Net etc, I can't see much of a justification for coding tools in such a language., given that they should be supporting cross-platform Celestia! As far as I know, VB.net only works for Windows, right?

Incidentally, there is a large amount of competent "anti-writing" against Microsoft's Net philosophy/environment. The latter doesn't seem to be REALLY "catching on" (despite massive PR-pressure from MS)

Fridger

Agree. The "trivial 3rd Kepler law formula" wrote in .NET framework with its result showed in a simple window, take the time to loading up as were an entire OS.

Re: Orbital Period Calculator

Posted: 09.06.2010, 23:53
by W0RLDBUILDER
The spreadsheet CAN be opened on OpenOffice.org Calc. :roll: Also, here's the VB version:
http://tbh-1138.deviantart.com/art/Orbi ... -166958665
t00fri wrote:What's the purpose of using such antiquated MS-specific code like VisualBasic and Exel??
Because I'm familiar with them. You got a problem with that?

Re: Orbital Period Calculator

Posted: 10.06.2010, 07:44
by t00fri
W0RLDBUILDER wrote:The spreadsheet CAN be opened on OpenOffice.org Calc. :roll: Also, here's the VB version:
http://tbh-1138.deviantart.com/art/Orbi ... -166958665
t00fri wrote:What's the purpose of using such antiquated MS-specific code like VisualBasic and Exel??
Because I'm familiar with them.
I thought you wanted to learn a little bit about coding with this simple project? Sorry...

You got a problem with that?

Yes, but never mind ;-) . You will make your friends at Deviantart happy with it.

Fridger

Re: Orbital Period Calculator

Posted: 28.06.2010, 12:09
by duds26

Finally, why didn't you include Perl on the scripting side? ;-) That's what WE use at Celestia for ALL our extensive data related tasks (for good reasons). Perl is certainly a most powerful and modern (obejct oriented) cross-platform scripting language.

+++++++++++++
Besides your overflowing wise remarks, we would be glad seeing also some neat graphical code from YOU at times, ...
+++++++++++++

F.

1) Didn't knew about Qt creator back then.

2)
Actually you can't be serious to even request Qt widgets for calculating a trivial one-line formula...
As I wrote above, a tiny lua script (coded and tested in 5 minutes) is just adequate for such a simple task.
I AM SERIOUS, you gotta love CODE SNIPPETS+TEMPLATES used right!

3) Python claims to be more user-friendly, also they have worked on the IO-aspect recently (2.7, 3.0). Seems like Perl should be added.

3) I've coded an gui for something recently but has nothing to do with astronomy or other science or engineering field.

Still very much in the process of learning to program in several languages.
I don't have all day to be be buzzy with this kind of stuff. Have other stuff I must do.

Re: Orbital Period Calculator

Posted: 09.06.2011, 17:28
by duds26
Good idea.
Seriously, go for it!
I really don't see any reason why not.

You got to start somewhere.

Don't forget that this is not a choice between these two per se.

You can now start learning lua and later, when you feel the need for lower level programming, do C++.

That you say you need to start creating world right now looks to me as if you're making content.
And that should be in scripting subforum.

When you do decide to add stuff to Celestia itself.
You can choose to work together with the other developers.
And when you are ready, send in patches for Celestia.