Float precision

Started by
5 comments, last by DLife 24 years, 3 months ago
Hi! I''m making a space simulator game and have one problem implementing solar system. The problem is, that my space craft can have coordinates bigger that 150,000,000,000 (distance from Earth to Sun or from planet to planet in meters ). If I place this number in single precision float, I will have problems with spacecraft movement. Spacecraft can be moved by 0.01 meter in each frame, and if I add 0.01 to 150E+9, I will have same number - 150E+9 (float precision limitation). Maybe somone have expirience in space simulators and know how to solve this problem. DLife
Advertisement
Break up your solar system into different sectors.
Coordinates will be smaller to manage, and your system will be smaller to manage to
Why use meters? That''s basically irrelevant in the grand scheme of things.

That''d take 15,000,000,000,000 frames to cross the solar system. At even 60fps thats almost 300,000 days of real-time just to cross the solar system moving at 0.01 meter (centameter)a frame.
-the logistical one-http://members.bellatlantic.net/~olsongt
The 0.01 m/frame speed will be used as minimal spacecraft
speed. Maximal speed can be 100 m/frame for example. Also
spacecraft can do small hyperspace jumps.
Anyway difference between solar sytem dimensions and
spacecraft dimensions is very big.

DLife
Would it be a problem to make your program use doubles instead of floats? Perhaps this would fix the precision problem.

Regards

Starfall
To be perfectly anal, using doubles will provide the precision for your universe. A double has 53 bits of precision, or about 15-16 digits of precision.

MSN
Even if you use doubles, you should probably consider using center-of-mass trees for you data structures anyway. That simplifies considerations such as gravity, etc. At the same time it gives you better precision within your localized areas.

That way a fleet in orbit around the earth wouldn''t have each get a direction vector that includes the earth''s orbit around the sun, you just move the earth-mass system around the sun, and move the ships around the earth relative to each other.

This topic is closed to new replies.

Advertisement