Tech things and such
Article / Note
2017/04/17

Répartition régulière de points sur une sphère

Un sujet moins évident qu'il n'y paraît ! Plusieurs approches sont envisageables, parmi lesquelles la répulsion électrostatique des points entre eux, implémentée dans cette simulation.




Les autres solutions souvent rencontrées sont par exemple basées sur la tesselation de polyèdres réguliers comme l'icosaèdre, ou encore sur une spirale de Fibonacci sur une sphère. Ces deux dernières méthodes donnent les points par construction, alors que celle présentée ici procède de transformations itérées sur un ensemble de points aléatoires.

Ce pdf développe les diverses stratégie en profondeur.

Génération aléatoire des points

En se plaçant dans un système de coordonnées sphériques, il est facile de créer cet ensemble de points. Dans ce type de repère, un point de l'espace possèdera 3 coordonnées :

  • Un rayon R
  • Un angle Omega représentant la longitude entre 0° et 360°
  • Un angle Phi représentant la latitude entre -90° et +90°

En fixant R et en tirant au hasard Phi et Omega, tous les points obtenus sont sur une sphère de rayon R. C'est cette méthode de calcul qui est employée ici. On observe cependant que la densité surfacique des points n'est pas constante et que les "pôles" de la sphère possèdent plus de points que l'équateur.

J'ai préféré conserver ce mode pour rendre plus manifeste l'effet de relaxation mais on peut souhaiter obtenir une répartition aléatoire plus uniforme. Cette page expose une méthode simple :

  • Créer des points aléatoires dans avec theta et h dans l'intervalle theta [0,2π] et h[-1,1]
  • Convertir ces points 2D en points 3D avec : $$ x = \sqrt{1-h^2}*cos(theta) {}$$ $$ y = \sqrt{1-h^2}*sin(theta) {}$$ $$ z = h {} $$
  • Normaliser ces points au rayon désiré.

Ceci mène à des résultats comme celui-ci :

>> Réagir à cet article