Home Register FAQ Members List Calendar Game Links Gallery
Go Back   Joystick Required Forums > Jumpgate TRI Forums > Jump's Jumpgate Tool Shed > Tool Chat
About This Page About This Page: This is a discussion on Modeling Time to Cover Distance with variable acceleration within the Tool Chat forums, part of the Jump's Jumpgate Tool Shed category, at Joystick Required Forums. Greetings all. I am attempting to write a program that will calculate how long a spaceship will take to move from Point A to Point B. This is actually an
Welcome to Joystick Required! Membership is easy and its free! And membership removes this giant ad space.

Reply
 
LinkBack Thread Tools

Old 11-23-2007, 07:26 PM   #1 (permalink)
Member
 
Istanbul's Avatar
 
Pilot Name: Istanbul
Joystick: Logitech Extreme 3D Pro
Join Date: Mar 2005
Location: WI
Posts: 770
Istanbul is on a distinguished road
Modeling Time to Cover Distance with variable acceleration

Quote:
Greetings all. I am attempting to write a program that will calculate how long a spaceship will take to move from Point A to Point B. This is actually an attempt to model my favorite computer game, so it isn’t 100% accurate in comparison to the real world. The developers introduced an element of drag to make the flying more user friendly.

I assume that the spacecraft starts out motionless, then applies maximum thrust from it’s engines instantaneously. (In reality it takes perhaps .05 seconds to move the throttle slider on my JS from 0 to 100, so I don’t think that this difference is what is throwing me off). For the very early stages of my program where I am just trying to figure out the proper calculations, I am assuming that Point B is 10000 meters away. The mass of the spaceship is 67620000g and the thrust provided by the engines at max throttle is 6400000 of whatever the applicable units of thrust are.

My understanding of the calculations required is that I need to use the calculations used in jet flight without the lift and gravity aspects. So far my internet research has lead me to the equations:

DistanceTraveled = InitialVel * Time + 1/2 Accel * Time ^ 2

Then:

Accel = ( Thrust - Drag ) / Mass

And:

Drag = DragFactor * Vel ^ 2

The only problem is that the first equation assumes the acceleration is a constant, when in my scenario, acceleration varies due to drag. I attempted to use looping and small time samples to model this, basically assuming that acceleration is constant during a very small moment of time (.01 seconds). (BTW, the DragFactor of the ship in my scenario is 35.5) (Another side note: The numbers given for thrust and the drag coefficient work out perfectly to make the ship stop accelerating at the top speed it has in game, so I don’t think those equations are wrong.)

Unfortunately, the results of this method vary wildly depending on the size of the time sample I use. If I use incredibly small samples (I went down to .00001, that actually took my CPU a few seconds to go through that many loops), it ends up with a result approaching the amount of time it takes to cover that distance if the spacecraft started out at it’s maximum velocity. If I use larger sample sizes, then the result is significantly longer than what it actually takes to perform in game. Using a stop watch, I did time trials that showed the ship taking ~28.5 seconds to cover that distance from a full stop.

I’ve tried to investigate calculus operations that would help me perform these calculations, but have found nothing that seemed to apply. Of course, I’ve forgotten anything I learned in Calculus in High School now, so I may have just not understood something and how it would apply. If anyone knows how to adjust the equations I have to continuously calculate the changing acceleration due to drag, please let me know. If anyone here knows programming and wants to look at my code, let me know and I’ll post a copy of the loop.

*Edit* Thanks to this scenario being in a game, we do not have to address changing mass due to fuel consumption.

Thanks,

Istanbul
I posted this question on physicsforums.com, but I figured I'd post it here as well in hopes that a fellow JGian would be able to help me out. (Plus one of the guys who wrote the game code might be able to shed some light on my question since they had to program this in an even more complicated fashion for us to even be able to play the game )
__________________
Crash-Riding: Degrading Music One Hit At A Time- My Blog about musical things. Go here if you want to see what I think about musical things. *Evil Laugh*

Hello Goblin Pathfinder! My name is Mophia!
The personal blog. Go here for various wierd things, including announcements and special inside information about I:NJAC! *Really Evil Laugh*
Istanbul is offline   Reply With Quote
Sponsored Links


Old 11-24-2007, 01:57 AM   #2 (permalink)
Member
 
Pilot Name: Jonboy
Join Date: Aug 2004
Posts: 314
Jonboy is on a distinguished road
Re: Modeling Time to Cover Distance with variable acceleration

The force is in newtons.

The UMEC forums has them all.
UMEC - View topic - Velocity Calculator program (plus theory)

Yeah. A ship speed calculator tool would be nice for this site.
Jonboy is offline   Reply With Quote

Old 11-24-2007, 09:12 AM   #3 (permalink)
Member
 
Istanbul's Avatar
 
Pilot Name: Istanbul
Joystick: Logitech Extreme 3D Pro
Join Date: Mar 2005
Location: WI
Posts: 770
Istanbul is on a distinguished road
Re: Modeling Time to Cover Distance with variable acceleration

T = 1 / x * acosh [ ½ * exp [ 2 * ln ( 2 ) + D * x / q ] – 1 ]

Ok, I’m guessing that this is the appropriate equation, but I’d appreciate a bit of help figuring out what the terms actually are. ‘T’ would be the time obviously, and I’m guessing the ‘D’ is where we would be putting the distance covered. I have no idea what the ‘x’ and the ‘q’ are supposed to be, and I’m guessing that the ‘acosh’ is something to do with cosine. Either that, or when Fido typed this equation, he should have used some spaces. I think I ‘get’ everything else, though I need to investigate how to program in natural logs and natural bases and all that jazz.

Thanks for the link Jonboy, I think you’ve gotten me pointed in the direction I needed.

*edit* Further reading of Fido's post, I noticed a couple more equations that define 'x' and 'q'


x = 2 * k * q / M

q = sqrt ( T / k )

‘T’ I’m pretty sure is the thrust, and ‘M’ would probably be the mass, but I am now left just needing to know what the ‘k’ is all about.
Istanbul is offline   Reply With Quote

Old 11-24-2007, 01:35 PM   #4 (permalink)
Member
 
WileE's Avatar
 
Pilot Name: WileE
Joystick: MS FF2
Join Date: Jan 2005
Location: Baton Rouge, LA
Posts: 252
WileE is on a distinguished road
Re: Modeling Time to Cover Distance with variable acceleration

k is going to be a constant of some sort. At least k generally is a constant of sorts.
WileE is offline   Reply With Quote

Old 11-24-2007, 01:48 PM   #5 (permalink)
Big Daddy
 
Jump's Avatar
 
Pilot Name: JumpDemon
Faction: Solrain
Joystick: MS FF2
Join Date: May 2004
Location: Tracy, Ca.
Posts: 6,939
Jump has a spectacular aura aboutJump has a spectacular aura about
<!-- google_ad_section_start(weight=ignore) -->Jump<!-- google_ad_section_end --> is a Solrain pilot
Re: Modeling Time to Cover Distance with variable acceleration

If you are going to copy past from another site or application you need to drop it in notepad first so it loses all the formating. Black text is just not readable here.
__________________
Currently working hard to break the server...

>> Help support JSR through our Amazon store
Jump is offline  Send a message via ICQ to Jump Send a message via Yahoo to Jump Reply With Quote

Old 11-25-2007, 01:51 AM   #6 (permalink)
Member
 
Pilot Name: Jonboy
Join Date: Aug 2004
Posts: 314
Jonboy is on a distinguished road
Re: Modeling Time to Cover Distance with variable acceleration

k is the drag factor (according to Muffy).

acosh is the inverse hyperbolic cosine (Inverse hyperbolic function - Wikipedia, the free encyclopedia). Which is on the standard windows calculator (check 'inv' and 'hyp' and press 'cos'), and should be in any spreadsheet program you would use for doing these calculations.

I'm gonna give thanks to BaadFood here. I think it was he who figured it all out. Fido also put in some work.
Jonboy is offline   Reply With Quote

Old 11-25-2007, 08:34 AM   #7 (permalink)
Member
 
Istanbul's Avatar
 
Pilot Name: Istanbul
Joystick: Logitech Extreme 3D Pro
Join Date: Mar 2005
Location: WI
Posts: 770
Istanbul is on a distinguished road
Re: Modeling Time to Cover Distance with variable acceleration

Well Jonboy, I actually am using VisualBasic, so I may need to do some additional research in how to implement it with that, but I'm gonna at least do some plug and crunch with what you've given me to test it out. Thanks for the help so far all.
Istanbul is offline   Reply With Quote

Old 11-25-2007, 07:24 PM   #8 (permalink)
Member
 
Istanbul's Avatar
 
Pilot Name: Istanbul
Joystick: Logitech Extreme 3D Pro
Join Date: Mar 2005
Location: WI
Posts: 770
Istanbul is on a distinguished road
Re: Modeling Time to Cover Distance with variable acceleration

In the built in functions of vb, ln is apparently log, and log is apparently log10. Kind of an interesting way to do it, but, whatever. They also don’t have acosh (inverse hyperbolic cosine), but it can apparently be derived with what they have. What I found from Microsoft says that

acosh(n)= Log(n+ Sqrt(n*n-1)).

That log would be ln when using a calculator or whatever (unless I misunderstood what they said). In this equation n would be equal to:

[ ½ * exp [ 2 * ln ( 2 ) + D * x / q ] – 1 ]

All the stuff that followed the acosh in the equation up there basically.

To clarify the variables one more time:

T = Time
k = drag factor
M = Mass
T(The other T) = Thrust
D = Distance

x and q are calculated based on the inputs of the variables.
I tried to implant this equation in two ways. One was to substitute everything in as one big equation. The other was to divide each of the parts of the equations into sub functions.

The first method, I started out with the three equations:

T = 1 / x * acosh [ ½ * exp [ 2 * ln ( 2 ) + D * x / q ] – 1 ]

x = 2 * k * q / M

q = sqrt ( T / k )

And did the substitutions.

x = 2 * k * sqrt ( Th / k ) / M

Then into the big equation

Ti = 1 / (2 * k * sqrt ( Th / k ) / M) * acosh [ ½ * exp [ 2 * ln ( 2 ) + D * 2 * k * sqrt ( Th / k ) / M / sqrt ( T / k ) ] – 1 ]

Then, cuz VB doesn’t have acosh itself as a function, I had to use the method they gave to calculate it.

acosh(n)= Log(n+ Sqrt(n*n-1)).

Then substitute the ‘n’ [ ½ * exp [ 2 * ln ( 2 ) + D * x / q ] – 1 ]

Log([ ½ * exp [ 2 * Log ( 2 ) + D * x / q ] – 1 ]+ Sqrt([ ½ * exp [ 2 * Log ( 2 ) + D * x / q ] – 1 ]* [ ½ * exp [ 2 * ln ( 2 ) + D * x / q ] – 1 ]-1)).

Then add the stuff that’s in front of that part of the equation for the whole kit and caboodle:

Ti = 1 / (2 * k * sqrt ( Th / k ) / M) * Log([ ½ * exp [ 2 * ln ( 2 ) + D * x / q ] – 1 ]+ Sqrt([ ½ * exp [ 2 * log ( 2 ) + D * x / q ] – 1 ]* [ ½ * exp [ 2 * log ( 2 ) + D * x / q ] – 1 ]-1)).

Recall that in vb, log is really ln. This method ended up resulting in the time that it would take to cover the distance flying at top speed the entire time.

The other method, I would’ve thought would yield the same result, but actually gave a time significantly greater than actual. The other method, I set up separate functions to handle each of the subsections of the equation.

First, I had the function that calculated q, then x (which uses q). Then I set up a function to calculate the n for inside the acosh deal. then I set up a function to calculate the acosh, which, again was Log(n+ Sqrt(n*n-1)). Then I simply calculated the 1/x*a (a= the acosh(n)). So, I’m not sure if this equation isn’t actually the right one, or if I’m just making some kinds of algebraic mistakes. Theoretically, both methods should’ve yielded the same answer, but I could have mis-parenthesized and screwed up the order of operations in one, the other or both.

Maybe I should experiment more with my original looping method. I could probably come up with a sample rate that closely approximates what actually happens, but then I’m afraid that that won’t hold up if I change the value of the input variables. It would seem rather stupid of me to set up a program that has to use a different sample rate for every possible scenario that I’d be calculating with the program.

Istanbul
Istanbul is offline   Reply With Quote
Reply

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


All times are GMT -7. The time now is 04:40 PM.
Powered by vBulletin® Version 3.7.1
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.2.0 RC5
NetDevil, Jumpgate, Jumpgate Evolution and all related images and logos are trademarks of NetDevil, Ltd. ? 2007 NetDevil, Ltd. All Rights Reserved.




Footer