# Displaying orbits & zooming

Hey, I’m also working on a space game, and next I want to make larger viewing scales. I’d like to zoom out to show the player a schematic view of the entire solar system, which they can view at any angle using the mouse. By schematic, I mean that there will be the approximate orbital paths rendered as huge circles floating in space. (Yes, they’re really more like ellipses, but starting with circles will get me most of the way there.)

My question is: How best to render these orbits? I could make a very very narrow toroidal figure. (hula hoop) But this seems wasteful and could be cumbersome. (It’s possible that the hoop could get too thin at some scales and orientations, and too thick at others.) Is there any way that I can just render the schematic lines and curves?

Is there any convenient way for me to do projections from the 3d models onto the render2d plane?

Ah, I just discovered GeomLinestrips!

Dunno if this is what you’ re looking for, but there’s also LineNodePath.

There’s also Rope, which uses GeomLinestrips internally to render curves.

David

My thoughts about zooming is this.
Create 3 different modes each running 64 bit precision python floats. Draw scene one objects stars and stuff clear the fix depth. Readjust draw scene 2 objects clear the fix depth. Then draw scene 3 where you have your space ships and other close stuff. When you move some of the scene 2 or scene 3 must be recreated.

Now there is 2 ways to fix depth. Simple way is just o clear the depth buffer and more complex way is to set your depth function this way as to sad witch every thing like use range 100-90 for scene 1 range 90-70 for scene 2 and then have 70-0 depth range for scene 3 - this is what Celestia does if you look at the source.

So everything can be in 64 bit precision? This would go a long way towards fixing problems that I am seeing. What do I have to do in order to ensure that everything is in 64 bit? Do I have to always do things like:

``````    node.setPos(LVecBase3D(0,93000000,0))
``````

Is there anything else I should do? Is there a way to tell the engine to use double precision throughout?