Présentation
Le projet hébergé sur rivendell.dmitrybrant.com/relativity propose une scène interactive où la constante c est fixée à 5 km/h (≈1,39 m·s⁻¹). L’utilisateur contrôle un avatar (WASD, souris) et observe les phénomènes de la relativité restreinte – contraction de Lorentz, dilatation du temps, rotation de Terrell et décalage Doppler – qui apparaissent dès que la vitesse approche la valeur imposée de c.
Principes physiques appliqués
Le facteur de Lorentz γ = 1/√(1‑β²) utilise β = v/c. Avec c = 5 km/h, un déplacement de 4,5 km/h correspond à β≈0,9, ce qui donne γ≈2,29. Ainsi, un objet de 2 m de longueur apparaît contracté à L = L₀/γ ≈ 0,87 m. La dilatation du temps suit Δt = γ·Δt₀ ; un intervalle de 1 s mesuré à l’arrêt s’étire à 2,29 s pour l’observateur se déplaçant à 4,5 km/h. Le code simule également la rotation de Terrell, où la forme perçue d’un objet en mouvement rapide subit une distorsion visuelle due à la propagation finie de la lumière.
Le décalage Doppler relativiste est calculé par f' = f·√((1+β)/(1‑β)). À β=0,9, la lumière provenant de l’avant est bleue‑déplacée d’un facteur ≈4,36, tandis que celle provenant de l’arrière est rouge‑déplacée d’un facteur ≈0,23. Le rendu montre ces changements de couleur en temps réel, rendant visible l’effet transverse lorsqu’un objet se déplace perpendiculairement à la ligne de visée.
Implémentation technique
Le moteur utilise WebGL avec des shaders GLSL pour appliquer les transformations de Lorentz à chaque fragment. Le fragment shader calcule la position d’origine d’un pixel en résolvant l’équation de la lumière dans le référentiel de l’observateur :
vec3 lorentzTransform(vec3 pos, float beta) {
float gamma = 1.0 / sqrt(1.0 - beta*beta);
float xPrime = gamma * (pos.x - beta * length(pos));
float tPrime = gamma * (length(pos) - beta * pos.x);
return vec3(xPrime, pos.y, pos.z);
}
Le facteur beta est mis à jour à chaque tick en fonction de la vitesse du joueur, dérivée des entrées clavier. Le calcul du Doppler utilise la même valeur beta pour ajuster la teinte du fragment via une conversion couleur‑fréquence.
Limitations et perspectives
Le simulateur ne fournit pas de mesures quantitatives de la précision numérique du shader; les arrondis en virgule flottante (32 bits) peuvent introduire des erreurs lorsque beta approche 1, ce qui se produit rapidement à une « c » de 5 km/h. De plus, aucune prise en compte de la gravité ou de la relativité générale n’est faite, ce qui limite la validité aux scénarios à vitesse constante et à champ gravitationnel négligeable. Le code source n’est pas publié, ce qui empêche une vérification indépendante des algorithmes de rendu. Malgré ces contraintes, la plateforme illustre de façon pédagogique comment les équations de la relativité restreinte se traduisent en effets visuels observables lorsqu’on réduit artificiellement la constante de vitesse de la lumière.