Je souhaite visualiser des catalogues d'étoiles astronomiques pouvant contenir des centaines de milliers d'entrées. Les catalogues consistent généralement simplement en une liste d'étoiles, avec des coordonnées sphériques et d'autres données pour chaque étoile. Par coordonnées sphériques, j'entends l'ascension droite (0-360 degrés ou 0-24 heures) et la déclinaison (-90 degrés à +90 degrés). Cela correspond à la longitude et la latitude, juste sur la sphère céleste au lieu de la surface de la Terre. Je voudrais tracer toutes les étoiles du catalogue qui sont situées dans un certain champ de vision, défini par le centre (en coordonnées sphériques) et la taille du champ de vision (en degrés) et la projection (projection stéréographique, par exemple).Tracer un graphique en étoile efficacement
Le traçage des étoiles en parcourant tout le catalogue et en vérifiant si chaque étoile se trouve ou non dans le champ de vision est très inefficace.
Comment est-ce que je pourrais rendre ceci plus efficace? Y a-t-il un bon algorithme ou structure de données pour ce genre de problème?
J'aime l'idée de trier le jeu de données! Avez-vous des indications sur les techniques de subdivision spatiale? Je pense que j'ai entendu certaines personnes utiliser HEALPix pour ça. – naavis
@naavis Je n'utilise pas la subdivision spatiale pour les étoiles car mes jeux de données sont assez rapides en tant que VBO unique (par rapport à un rendu plus lent de la diffusion de l'atmosphère, du terrain, etc.). Quoi qu'il en soit, vous pouvez diviser votre ensemble en grille sphérique avec une taille de grille assez petite. Ainsi, par exemple, vous pouvez choisir la taille de la cellule de grille '10deg x 10deg' en créant une table d'étoiles pour chaque cellule de la grille. Rendez ensuite uniquement les cellules situées à proximité de la zone de vue sélectionnée. Vous devriez jouer un peu avec la taille de la cellule pour maximiser la performance. – Spektre