@pirogronian
One of my experiments might amuse you then.
In one of my forks I have added some commands to celx, several forks in fact, in this one I did something odd.
When a 'filtersearch' is called, one of several filters are engaged.
The existing catalog is deallocated.
Then it is reloaded based on what I want.
For instance, I can filter according to distance, class, distance to nearest neighbor.
This gives me a sparse star field consisting of only those stars I want.
No need to mark them, which gets messy, I simply do not have the others in memory to be shown.
The code for all of this messy, and not well written.
The program stops while the database is reloaded.
It is also prone to hanging.
As I have said many times, I am not a real C/C++ programmer.
On the frame rate front.
I have been working on adding a 'MaxFps' parameter to the cfg file.
set nextrendertime on program start.
:Render:
If nextrendertime > current, then delay somehow, repeat until nextrendertime <= current, then :Render:
Record the time.
Set nextrendertime based on current plus frametime (1/maxfps).
go do the render thing now.
It is very crude, but it should work.
I have also added several commands to celx in my forks.
RaDec: which looks up stars by their Ra, Dec, Dist, gives closest match.
Near: Uses a star or an RaDec set and a separation, such as listing all the stars within one degree of something, gives neat cones.
Beside: Returns list of all the stars within so many LY of the target star.
Between: Returns the distance between two stars.
Eventually I will merge all of these into a single project.
For now, they each serve a different purpose.
Janus.
P.S. You should grab the solar system tour and look at it.
It is a DVD recording of a tour script I am working on to introduce children to the solar system.
It plays in a standard player, and lets you select planets or just do the whole tour.
http://celestia.simulatorlabbs.com/Tour/It is set to music, mostly classical styled though.