Aller au contenu
Retour au jeu

Le Coursier relativiste · Théorie

La physique derrière le jeu

Dans la ville du jeu, la lumière ne va qu’à 30 m/s, à peu près 108 km/h. Ton véhicule de livraison peut s’en approcher, et tout ce que tu vois change : les couleurs, les formes, le temps. Rien n’est truqué : c’est la relativité restreinte d’Einstein, calculée image par image. Choisis ton niveau.

Niveau 1Débutant : ce que tu vois, et pourquoi

Pas d’équations ici, seulement des idées et des images du jeu. Tout ce qui suit est vrai dans notre monde aussi. Chez nous, la lumière va dix millions de fois plus vite (300 000 km/s) : il faudrait foncer à une fraction notable de cette vitesse pour voir ces effets. Dans le jeu, une voiture suffit.

Vue du coursier à l’arrêt sur l’avenue de test : rue droite bordée de façades orange, jaunes, vertes, turquoise et violettes, ciel bleu pâle, guidon du véhicule en bas de l’image.
À l’arrêt. L’avenue de test du jeu : des façades aux couleurs de l’arc-en-ciel, des lampadaires tous les 40 m. Le petit rectangle sombre, au loin à gauche, est un panneau qui ne renvoie que de l’infrarouge : on le retrouvera plus bas. Les images de cette page viennent toutes de cette avenue, avec c = 30 m/s.

1. Une vitesse limite

Rien ne va plus vite que la lumière : ni ton véhicule, ni aucun message. Tu peux garder l’accélérateur enfoncé aussi longtemps que tu veux, ta vitesse s’approche de 30 m/s sans jamais l’atteindre.

Au début, chaque seconde de poussée ajoute 6 m/s, comme on s’y attend. Puis le gain fond : il faut 2,7 s pour atteindre 15 m/s (la moitié de c), 5 s pour 22,8 m/s (76 %), 7,4 s pour 27 m/s (90 %). Le jeu s’arrête à 99,5 % de c, soit 29,85 m/s.

Ce n’est pas le moteur qui faiblit : à bord, tu ressens toujours la même poussée. C’est la façon dont les vitesses s’additionnent qui change. Ajouter 6 m/s à une vitesse déjà proche de c donne un peu moins que la somme, et d’autant moins qu’on est près de c.

2. Deux horloges

Le jeu affiche deux horloges. Ta montre mesure ton temps à toi : c’est aussi ta batterie. L’horloge de la ville mesure le temps des habitants, des délais de livraison, des ponts et des feux.

À l’arrêt, elles avancent ensemble. Quand tu roules vite, ta montre avance moins vite que l’horloge de la ville. Toi, tu ne sens rien : ton cœur, ta montre et ton moteur ralentissent tous ensemble. Mais en comparant les deux horloges, l’écart se creuse.

Le jeu en pleine vitesse avec son affichage : à gauche, « Ta montre » et « Horloge de la ville » avec un écart rouge entre elles ; à droite, la jauge de vitesse presque au mur marqué c.
À 27 m/s (90 % de c). Ta montre marque 19,5 s, l’horloge de la ville 26,0 s : la ville a pris 6,5 s d’avance, et l’écart grandit vite, car à cette vitesse la ville vieillit 2,3 fois plus vite que toi (γ = 2,29 ; le jeu arrondit en « ×2 »). Le compteur tronque 26,99 m/s en « 26 m/s ».

Le paradoxe des jumeaux. Luc, ton jumeau, reste au dépôt. Toi, tu fais un aller-retour de 300 m dans chaque sens, le plus vite possible : tu accélères jusqu’à mi-chemin, tu freines, tu fais demi-tour et tu recommences. Pendant que tu roules, ta montre avance de 26,3 s et celle de Luc de 34,6 s. À ton retour, tu as 8,3 s de moins que lui.

Ce n’est pas symétrique : c’est toi qui as accéléré, freiné et fait demi-tour, pas Luc. Le paradoxe a été proposé par Paul Langevin en 1911.

3. Voir, c’est regarder le passé

La lumière met du temps pour venir jusqu’à toi. À 30 m/s, un bâtiment situé à 300 m t’apparaît tel qu’il était il y a 10 s. Tout ce que tu vois est une image du passé, d’autant plus ancienne que c’est loin.

Voir, c’est regarder le passéUn bâtiment est à 300 mètres. À 30 mètres par seconde, sa lumière met 10 secondes pour te parvenir : quand son horloge marque 12 h 00 min 10 s, tu la vois marquer 12 h 00 min 00 s.là-bas, maintenant : 12:00:10la lumière met 10 s pour venir300 m à c = 30 m/stu vois : 12:00:00

Pour une maison immobile, cela ne change rien. Mais une porte qui s’ouvre, un pont qui se lève ou un feu qui change de couleur : tu le vois en retard. Un pont qui te paraît baissé peut être déjà levé. Il vaut mieux se fier aux horaires de la ville qu’à ses yeux.

Chez nous aussi : la lumière du Soleil met un peu plus de 8 minutes pour nous parvenir. Le Soleil que tu vois est celui d’il y a 8 minutes.

4. Le décor se resserre vers l’avant

Quand tu cours sous une pluie qui tombe bien droit, tu dois pencher ton parapluie vers l’avant : pour toi, la pluie arrive de face. La lumière fait la même chose. Quand tu roules vite, chaque objet semble plus en avant qu’il ne l’est vraiment.

Résultat : tout le décor se resserre vers le centre de l’écran. Ce qui est devant semble plus loin et plus petit. Ce qui était sur les côtés, et même un peu derrière toi, entre dans l’écran. Les lignes droites des façades se courbent. C’est l’aberration de la lumière.

Aberration : le décor se resserre vers l’avantVue de dessus. 24 bâtiments répartis tout autour de toi, tous les 15 degrés. À l’arrêt, 7 d’entre eux tiennent dans les 90 degrés de l’écran. À 76 % de c, leurs directions apparentes se resserrent vers l’avant : 13 tiennent dans l’écran, dont celui qui est exactement sur ton côté (en jaune), vu à 40 degrés devant toi. Ceux de devant sont bleuis, ceux de derrière rougis.À l’arrêt7 points sur 24 dans l’écranÀ 22,8 m/s (β = 0,76)13 points sur 24 dans l’écranavant ↑ · zone claire : ce que montre l’écran (90°)
Vision relativiste à 22,8 m/s : l’avenue paraît lointaine au centre, les façades proches se courbent en arcs bleutés et lumineux sur les côtés, le ciel au-dessus devient bleu nuit.
Relativiste ce que tu vois
Même instant en vision classique : l’avenue droite avec ses façades jaunes, vertes, turquoise et bleues, sous un ciel bleu pâle.
Classique la même ville, sans effets
À 22,8 m/s (76 % de c). En vision classique, la ville telle qu’elle est ; en vision relativiste, ce que tu vois au même instant. Les façades qui longent la route, presque à côté de toi, sont ramenées devant toi en grandes courbes. L’avenue semble s’éloigner. Facteur de temps γ = 1,54 ; droit devant, les fréquences de la lumière sont multipliées par D = 2,72.

5. Bleu devant, rouge derrière

Tu connais l’effet Doppler avec le son : la sirène d’une ambulance est plus aiguë quand elle vient vers toi, plus grave quand elle s’éloigne. Avec la lumière, c’est la couleur qui change. En fonçant vers une façade, tu reçois ses ondes plus serrées : elle paraît plus bleue. Derrière toi, plus rouge.

On note ce décalage D. Avec D = 2, les ondes arrivent deux fois plus serrées. Droit devant, D vaut 1,7 à 15 m/s, 2,7 à 22,8 m/s et 4,4 à 27 m/s. Droit derrière, c’est l’inverse : 0,58, 0,37 puis 0,23.

Vision relativiste à 15 m/s : le centre de l’image, au bout de l’avenue, est bleuté ; les façades proches, sur les bords, prennent des teintes violettes, brunes et vert olive.
Relativiste 15 m/s
Même instant en vision classique : façades vertes, turquoise, bleues et violettes de part et d’autre de l’avenue.
Classique 15 m/s
À 15 m/s (50 % de c). Le bout de l’avenue, droit devant (D = 1,73), est bleui. Les façades proches, vues sur le côté, sont moins décalées et changent de teinte autrement. γ = 1,15.

Une couleur décalée ne fait pas que « bleuir ». Une lampe rouge vue de face devient orange, puis jaune, puis verte, puis bleue. Au-delà, sa lumière part dans l’ultraviolet, que tu ne vois pas : la lampe s’éteint à tes yeux.

6. Des couleurs invisibles apparaissent

Ton œil ne voit qu’une tranche de la lumière, du violet (vers 360 nm) au rouge profond (vers 830 nm). Au-delà du rouge, il y a l’infrarouge : la chaleur, la lumière des télécommandes. En deçà du violet, l’ultraviolet, celui des coups de soleil. Les façades en renvoient aussi, mais tu ne les vois pas.

Quand tu fonces, l’infrarouge des objets de devant est décalé jusque dans le visible : tu le vois ! Et leur lumière visible, décalée elle aussi, part dans l’ultraviolet. Derrière toi, c’est l’inverse : tu vois leur ultraviolet.

Effet Doppler : la fenêtre de l’œil glisse sur le spectreTon œil voit de 360 à 830 nanomètres. Avec un facteur Doppler D, il reçoit la lumière émise entre 360 fois D et 830 fois D. Derrière toi (D = 0,5), cette fenêtre tombe dans l’ultraviolet émis, entre 180 et 415 nanomètres ; à l’arrêt (D = 1), dans le visible ; devant toi (D = 2), dans l’infrarouge émis, entre 720 et 1660 nanomètres.lumière émise par la façade (longueur d’onde en nm, échelle log.)UVbleuvertrougeinfrarouge20036049059083012002000derrière toi, D = 0,5 : tu vois l’UV, tout est sombre et rougià l’arrêt, D = 1 : le visible, couleurs normalesdevant toi, D = 2 : l’infrarouge, bleu pâleBarres : ce que ton œil (360–830 nm) reçoit, émis de 360·D à 830·D nm.
Vision relativiste à 15 m/s : à gauche de l’avenue, un panneau vertical vert-jaune vif se détache devant une façade bleutée.
Relativiste le panneau brille
Même instant en vision classique : le même panneau est un rectangle noir devant une façade violette.
Classique le panneau est noir
Le panneau infrarouge de l’avenue, à une cinquantaine de mètres, à 15 m/s. Il ne renvoie que de l’infrarouge : à l’arrêt ou en vision classique, il est noir. En roulant vers lui (D ≈ 1,7), son infrarouge arrive au-dessus de 480 nm, dans le vert, le jaune et le rouge : il devient vert-jaune.

Au-delà de D ≈ 2,3 (69 % de c, droit devant), tu ne vois plus du tout la lumière visible des façades qui sont devant toi : seulement leur infrarouge. Voilà pourquoi la ville, devant toi, devient d’un bleu pâle presque uniforme à grande vitesse : ce sont ses reflets infrarouges, décalés jusqu’au bleu.

7. L’effet projecteur

En plus de changer de couleur, la lumière de devant devient beaucoup plus intense, et celle de derrière s’éteint presque. Tu fonces dans le flot de lumière : tu reçois plus de lumière par seconde, chaque grain de lumière porte plus d’énergie, et l’aberration concentre devant toi la lumière de tout un côté. À 22,8 m/s, une façade droit devant t’envoie environ 55 fois plus de lumière qu’à l’arrêt.

Ton œil s’adapte, comme en sortant d’un tunnel : le jeu baisse l’exposition pour qu’une façade moyenne, vue de face, garde sa luminosité. Par contraste, les côtés et l’arrière paraissent sombres.

Vision relativiste à 27 m/s : toute la ville tient dans un cercle lumineux au centre, les bâtiments au bout de l’avenue sont gris-bleu clair, le bord de l’image est sombre avec des franges violettes et bleu-vert, deux lampadaires orangés en haut.
Relativiste 27 m/s
Même instant en vision classique : façades turquoise, bleues, violettes, rouges et jaunes le long de l’avenue.
Classique 27 m/s
À 27 m/s (90 % de c). Tout ce qui est à moins de 122° de l’avant tient dans l’écran, qui n’en montre que 90°. Le centre est éclatant, les bords s’assombrissent. Droit devant, D = 4,35 ; γ = 2,29. En haut à gauche et à droite : deux lampadaires qui sont en réalité presque à côté de toi.

8. La vision classique, pour comparer

Maintiens la touche C (ou Maj, ou le bouton 👁 sur un écran tactile) : le jeu montre la même ville, au même instant de l’horloge de la ville, sans aucun effet. Pas de retard de la lumière, pas d’aberration, pas de Doppler, pas de projecteur : ce qu’on verrait si la lumière était infiniment rapide. Les horloges, elles, continuent de suivre la relativité. La vision classique ne change que ce que tu vois.

Vision relativiste à 28,5 m/s : un tunnel lumineux bleu pâle au centre, l’avenue minuscule tout au fond, le reste de l’image gris-bleu sombre.
Relativiste 28,5 m/s
Même instant en vision classique : l’avenue droite entre de hautes façades rouges, violettes, orange et jaunes.
Classique 28,5 m/s
À 28,5 m/s (95 % de c). En vision relativiste, la ville entière se ramasse dans un tunnel lumineux au centre de l’écran ; en vision classique, l’avenue est toute droite. Droit devant, D = 6,2 ; γ = 3,2.

9. Ce qu’il faut retenir

Passer au niveau intermédiaire Essayer dans le jeu

Niveau 2Intermédiaire : les équations du jeu

Les mêmes effets, avec leurs équations, celles que le jeu calcule à chaque image. Notations : c est la vitesse de la lumière (30 m/s par défaut, réglable de 10 à 100 m/s), v ta vitesse dans la ville et β = v/c ; a = c/5 est la poussée du moteur (6 m/s² à c = 30) ; τ (tau) est le temps de ta montre, t celui de la ville.

1. Le facteur de Lorentz γ

Tout part d’un nombre, le facteur de Lorentz :

γ=11−β2β=vc

γ vaut 1 à l’arrêt, 1,15 à β = 0,5 (15 m/s), 1,54 à β = 0,76 (22,8 m/s), 2,29 à β = 0,9 (27 m/s) et 10 au plafond du jeu, β = 0,995. Il est commode d’introduire aussi la rapidité φ :

β=tanh⁡φγ=cosh⁡φγβ=sinh⁡φ

La rapidité, contrairement à la vitesse, n’a pas de plafond, et en ligne droite elle s’additionne simplement. Le jeu la limite à φ = 3.

2. Dilatation du temps

Pendant que ta montre avance de Δτ, les horloges de la ville que tu croises (synchronisées entre elles dans la ville) avancent de :

Δt=γΔτ

C’est l’écart affiché par le jeu entre « Ta montre » et « Horloge de la ville ». Ton temps, le temps propre, est la somme de ces petits morceaux le long de ton trajet :

τ=∫dtγ=∫1−v2c2dt
Exemple

À 27 m/s (γ = 2,29), 10 s de montre font 22,9 s de ville. Jumeaux : aller-retour de L = 300 m, en poussant jusqu’à mi-chemin puis en freinant, dans chaque sens. La rapidité culmine à arcosh 2 (β = 0,87) et :

τ=4caarcosh⁡2≈26,34st=4ca22−1≈34,64s

soit 8,3 s d’écart au retour, pour tout c (le rythme du jeu, c/a = 5 s, ne dépend pas de c).

3. Accélérer à poussée constante

Le moteur fournit une accélération propre a constante : celle que tu ressens à bord. Ce n’est pas dv/dt dans la ville. Ce qui augmente régulièrement, c’est la rapidité : φ = aτ/c. D’où, depuis l’arrêt :

v=ctanh⁡(aτc)t=casinh⁡(aτc)x=c2a(cosh⁡(aτc)−1)
Vitesse sous poussée constanteCourbe de la vitesse en fonction du temps propre, pour c = 30 m/s et a = 6 m/s². En pointillés, la droite de Newton v = a·τ dépasse 30 m/s après 5 secondes. La courbe relativiste, 30·tanh(τ/5), passe par 15 m/s à 2,7 s, 22,8 m/s à 5 s, 27 m/s à 7,4 s, et s’approche de 30 m/s sans jamais l’atteindre.010203002,557,51012,5τ, temps sur ta montre (s)vitesse (m/s)c = 30 m/s, jamais atteinteNewton : v = a·τv = c·tanh(aτ/c)β = 0,5β = 0,76β = 0,9
Exemple

10 s de poussée depuis l’arrêt (φ = aτ/c = 2) : v = 30·tanh 2 = 28,92 m/s, t = 5·sinh 2 = 18,13 s, x = 150·(cosh 2 − 1) = 414,3 m. Les 5 premières secondes (φ = 1) suffisent pour 22,85 m/s, soit 0,76·c. Le test du cahier des charges, lui, injecte c = 100 m/s et a = 10 m/s² (φ = 1 après 10 s) : 76,16 m/s, 11,75 s et 543,1 m. Le jeu le vérifie à un millionième près, quel que soit le nombre d’images par seconde.

Freiner est le même mouvement à l’envers. Distance d’arrêt depuis le facteur γ :

d=c2a(γ−1)

Soit 23 m depuis 15 m/s, 81 m depuis 22,8 m/s, 194 m depuis 27 m/s. Le temps naturel du mouvement est c/a = 5 s et sa longueur naturelle c²/a = 150 m ; l’unité de longueur des niveaux, L = 10·c = 300 m, en vaut le double.

4. Additionner des vitesses

Deux vitesses dans la même direction ne s’ajoutent pas, elles se composent :

w=u+v1+uvc2φw=φu+φv

Exemple à c = 30 : 20 m/s « plus » 20 m/s font 40/(1 + 400/900) = 27,7 m/s, pas 40. Le résultat reste sous c. À chaque image, le jeu compose ta vitesse avec le petit gain c·tanh(aΔτ/c) ≈ aΔτ, avec la version en deux dimensions de cette loi (niveau expert). C’est pour cela que v = aτ est faux : chaque Δv = aΔτ est mesuré dans ton référentiel du moment, pas dans celui de la ville.

5. Le temps retardé

La lumière qui t’arrive à l’instant t d’un objet immobile situé à la distance d est partie à :

te=t−dc

Pour un objet qui bouge, sa position dépend de l’instant d’émission, d’où une équation implicite :

c(t−te)=|𝐱obs−𝐩(te)|
Exemple

Le pont du niveau 4, vu à 81 m (la distance qu’il faut pour s’arrêter depuis 22,8 m/s) : son image a 81/30 ≈ 2,7 s de retard. À c = 100, la même situation se joue à 272 m, avec le même retard. En roulant vers une horloge de la ville, tu la vois défiler D fois plus vite que ta montre (× 2,7 à 22,8 m/s), et non γ fois : tu vois ses images de plus en plus récentes.

6. L’aberration

Soit θ l’angle, mesuré dans la ville, entre ta vitesse et la direction d’un objet, et θ′ l’angle sous lequel tu le vois :

cos⁡θ′=cos⁡θ+β1+βcos⁡θ

Un objet exactement sur le côté (θ = 90°) est vu à θ′ tel que cos θ′ = β : 60° à β = 0,5, 40,4° à β = 0,76, 25,8° à β = 0,9. L’écran montre 90° (θ′ ≤ 45°) : à β = 0,76, il contient tout ce qui est à moins de 97° de l’avant ; à β = 0,9, jusqu’à 122°.

Angle vu en fonction de l’angle réelPour β = 0, la droite θ′ = θ. Quand β augmente, les courbes passent sous la diagonale : à β = 0,9, un objet situé à 90 degrés sur le côté est vu à 26 degrés devant, et l’écran (θ′ jusqu’à 45 degrés) montre tout ce qui est à moins de 122 degrés de l’avant.0459013518004590135180θ, direction dans la ville (degrés depuis l’avant)θ′, direction vue (degrés)dans l’écran (θ′ ≤ 45°)β = 0β = 0,5β = 0,76β = 0,9

Le jeu applique cette transformation à chaque sommet des bâtiments, en gardant leur distance. Les façades sont découpées en petits morceaux pour que leurs arêtes droites puissent se courber.

7. Le facteur Doppler D

Les fréquences reçues sont multipliées par :

D=γ(1+βcos⁡θ)=1γ(1−βcos⁡θ′)
Ddevant=1+β1−β=eφDderrière=e−φ

Sur le côté dans la ville (θ = 90°), D = γ > 1 : c’est l’effet Doppler transverse, une pure dilatation du temps. Mais vu sur le côté de l’écran (θ′ = 90°), D = 1/γ < 1. À 22,8 m/s : D = 2,72 droit devant, 1,54 pour un objet réellement sur le côté, 0,37 droit derrière.

8. Couleurs : λ divisée par D

λvue=λémiseDνvue=Dνémise

Autrement dit, ce que tu vois à la longueur d’onde λ a été émis à D·λ. L’œil voit de 360 à 830 nm : il reçoit donc la lumière émise entre 360·D et 830·D nm (voir le schéma du niveau débutant). Au-delà de D = 830/360 ≈ 2,31, soit β > 0,68 droit devant, il ne reste plus rien de la lumière visible émise : seul l’infrarouge.

Exemple : la Porte Verte

Une lampe rouge à 640 nm paraît verte quand 640/D est entre 510 et 562 nm, soit D entre 1,14 et 1,25. Droit devant, D = √((1 + β)/(1 − β)) : β entre 0,13 et 0,22, c’est-à-dire de 3,9 à 6,7 m/s (de 13 à 22 m/s à c = 100).

9. L’effet projecteur en D⁴

La luminance d’une surface, toutes longueurs d’onde confondues, est multipliée par D⁴ :

Ivue=D4Iémise

Un facteur D pour l’énergie de chaque photon, un autre pour leur cadence d’arrivée, et D² parce que l’aberration resserre l’angle solide. Droit devant : × 55 à 22,8 m/s (D = e), × 361 à 27 m/s ; derrière, × 0,018 à 22,8 m/s. Le jeu applique D⁴ exactement jusqu’à D = 8, puis plafonne, et compense la luminosité d’ensemble par une exposition E, comme l’œil : E = 0,093 à 22,8 m/s, 0,039 à 27 m/s.

10. L’horizon de Rindler

Sous poussée constante depuis l’arrêt, ta ligne d’univers est une hyperbole :

(x+c2a)2−(ct)2=(c2a)2

Elle s’approche de la droite de lumière x = ct − c²/a sans jamais la toucher. Un éclair émis au départ à plus de c²/a derrière toi (150 m à c = 30) ne te rattrape jamais, tant que tu accélères : c’est un horizon, comme celui d’un trou noir, mais dû seulement à ton accélération.

Horizon de RindlerDiagramme d’espace-temps, à c = 30 m/s et a = 6 m/s² (c²/a = 150 m, c/a = 5 s). Tu pars de l’arrêt en x = 0 et tu accélères sans arrêt : ta ligne d’univers est une hyperbole qui s’approche de la droite de lumière partie de x = −150 m, sans jamais la toucher. Un flash émis à 90 m derrière toi au départ te rattrape ; un flash émis à 195 m derrière toi ne te rattrape jamais, tant que tu accélères.051015−225−150−75075150225300375x, position dans la ville (m, à c = 30 m/s)t, horloge de la ville (s)tirets rouges : horizon(flash parti à c²/a = 150 m derrière)rattrapé195 m90 mne te rattrape jamaistoi(poussée a)

11. Récapitulatif chiffré

Poussée constante depuis l’arrêt, c = 30 m/s, a = 6 m/s² (temps identiques pour tout c ; distances et vitesses × 10/3 à c = 100).

β v (m/s) γ τ (s) t (s) x (m) D devant D derrière côté vu à
0,39,001,0481,551,577,21,360,73472,5 °
0,515,001,1552,752,8923,21,730,57760,0 °
0,618,001,2503,473,7537,52,000,50053,1 °
0,76222,851,5435,005,8881,52,720,36840,4 °
0,824,001,6675,496,671003,000,33336,9 °
0,927,002,2947,3610,321944,360,22925,8 °
0,9528,503,2039,1615,213306,240,16018,2 °
0,99529,8510,06815,0050,091 36020,090,0505,7 °

« Côté vu à » : angle apparent, depuis l’avant, d’un objet situé exactement sur ton côté. Au plafond du jeu (φ = 3), D devant vaut 20 et le projecteur, plafonné à 8⁴, n’est plus exact.

Passer au niveau expert Revenir au niveau débutant

Niveau 3Expert : le modèle, du quadrivecteur au pixel

Ce niveau détaille les choix du moteur : pourquoi telle forme exacte plutôt qu’une autre, ce qui est physique, ce qui est une convention de rendu, et ce qui est laissé de côté. Métrique de signature (−, +, +, +), c explicite. Les liens renvoient au code source (branche main).

1. Quadrivecteurs et vitesse propre

𝐗=(ct,𝐱)𝐔=d𝐗dτ=(γc,𝐮)𝐮=γ𝐯𝐔·𝐔=−c2

L’état du véhicule est sa position, sa vitesse propre u = γv (partie spatiale de la quadrivitesse) et ses deux horloges, en double précision. On en déduit tout le reste :

γ=1+|𝐮|2c2𝐯=𝐮γ|𝐮|=csinh⁡φ

Avec u comme état, |v| < c est garanti pour tout u fini, sans test ni renormalisation. En flottants 64 bits, v = c·tanh φ s’arrondirait à c vers φ ≈ 18 ; côté GPU, en 32 bits, β s’arrondit à 1 vers φ ≈ 9. Le jeu plafonne φ à 3 (β = 0,995, γ = 10), borne fixée par la couverture de la table Doppler (|log₂ D| ≤ 4,5). Code : relativity.js, player.js.

2. Le segment hyperbolique exact

Sous une poussée propre α constante dans le référentiel comobile initial, pendant le temps propre h, la ligne d’univers est un arc d’hyperbole. Avec :

ψ=|𝛂|hcS=sinh⁡ψψK=cosh⁡ψ−1ψ2𝐀=𝛂+(𝛂·𝐮0)𝐮0c2(γ0+1)

le pas exact s’écrit :

𝐮1=cosh⁡ψ𝐮0+hS𝐀Δ𝐱=hS𝐮0+h2K𝐀Δt=hSγ0+h2K𝛂·𝐮0c2

C’est exactement la composition v₁ = v₀ ⊕ c·tanh(ψ)·α̂ (à 4,5·10⁻¹⁴ près en pratique), avec la loi vectorielle, non commutative :

𝐯⊕𝐰=𝐯+𝐰∥+𝐰⊥γv1+𝐯·𝐰c2

Pourquoi Δv = aΔτ n’est exact qu’à pas infinitésimal. a est l’accélération dans le référentiel comobile instantané, qui change au cours du pas ; Δv = aΔτ est la tangente de la solution, pas la solution. Appliquée telle quelle à chaque image, elle donne 542,10 m au lieu de 543,08 m à 60 images/s pour le test du cahier des charges (« 10 s de poussée », avec c = 100 m/s et a = 10 m/s² injectées), et 541,12 m à 30 images/s : le résultat dépend de la cadence. La forme hyperbolique, elle, est exacte pour n’importe quel découpage, y compris un pas unique de 10 s (écart mesuré ≤ 2·10⁻¹¹). Les sous-pas internes (≤ 1/60 s et ≤ 1 m) ne servent qu’aux collisions et au virage : en virage avec poussée, un schéma de Strang d’ordre 2 laisse moins d’un millimètre d’écart après 10 s.

3. Fermi-Walker et Thomas-Wigner

Pendant un segment, la direction de poussée est fixe dans le référentiel comobile initial : elle est transportée par Fermi-Walker, sans rotation propre. Ce n’est pas la même chose que des axes du monde « reboostés » à chaque instant : deux boosts non colinéaires se composent en un boost suivi d’une rotation (rotation de Wigner), d’où le caractère non commutatif de ⊕. Le long d’une trajectoire courbe, l’effet cumulé est la précession de Thomas :

𝛚T=γ2γ+1𝐚×𝐯c2par tour : 2π(γ−1)

En virage circulaire, un gyroscope embarqué tournerait de 2π(γ − 1) par tour : trois tours complets à γ = 4 sur l’anneau du niveau 6. Pourquoi le jeu l’ignore : la conduite est « arcade ». La route fournit la force latérale, hors du budget du moteur, et le cap du véhicule est collé à sa vitesse dans la ville ; la caméra regarde le long de v. Le jeu ne suit donc aucune orientation propre (pas de gyroscope), et la vue est obtenue par un boost pur depuis la ville, sans rotation. C’est un choix de modèle, documenté, pas une approximation numérique : la précession existe, mais rien dans le jeu ne la mesure.

4. Aberration et Doppler par un boost

Le boost de Lorentz de vitesse βc, sans rotation, s’écrit :

ct′=γ(ct−𝛃·𝐱)𝐱′=𝐱+γ2γ+1(𝛃·𝐱)𝛃−γct𝛃

La lumière reçue d’un point immobile vu dans la direction monde n, à la distance r, relie deux événements séparés par un intervalle de genre lumière : l’émission précède la réception de r/c. En boostant cette séparation, on obtient en une ligne le facteur Doppler, la distance apparente et la direction apparente :

(ct,𝐱)=(−r,r𝐧)⟹r′=DrD=γ(1+𝛃·𝐧)
𝐧′=𝐧+(γ2γ+1(𝛃·𝐧)+γ)𝛃D

(On a utilisé (γ − 1)/β² = γ²/(γ + 1), qui évite la division par β à l’arrêt.) C’est le calcul que fait le shader pour chaque sommet. Le ciel, lui, part de la direction de chaque pixel et a besoin de l’inverse exacte :

𝐧=D(𝐧′+(γ2γ+1(𝛃·𝐧′)−γ)𝛃)D=1γ(1−𝛃·𝐧′)

5. Invariance de Iν/ν3 : d’où viennent D⁴ et D⁵

La luminance spectrale divisée par ν3 est proportionnelle à la densité des photons dans l’espace des phases, un invariant de Lorentz. Donc :

Iνν3=invariant⟹Iν′′(ν′)=D3Iν(ν′D)
I′=D4IIλ′(λ)=D5Iλ(Dλ)

En intégrant sur ν, on gagne un facteur D : la luminance totale varie en D⁴. Par unité de longueur d’onde, on en gagne un de plus (dλ = −c dν/ν2) : D⁵. Le jeu sépare ces facteurs : la matrice de couleur M(D) contient le seul jacobien D (dλémise/dλvue), et l’effet projecteur applique le reste, D⁴, plafonné à 8⁴ = 4 096 (exact jusqu’à D = 8, soit γ ≈ 4,1 de face ; la borne garde aussi les valeurs loin du maximum des flottants 16 bits, 65 504). OpenRelativity appliquait D² ; le jeu applique l’exposant physique, et un test le verrouille par l’invariance du corps noir (section 7).

6. Le modèle spectral

Trois canaux RVB ne suffisent pas : un décalage Doppler fait entrer l’infrarouge et l’ultraviolet dans le visible. Chaque surface porte donc cinq réflectances (r, g, b, ir, uv) sur des bases en créneaux qui partitionnent l’unité sur [0 ; ∞[ en longueur d’onde émise : uv sous 360 nm, b de 360 à 490, g de 490 à 590, r de 590 à 830, ir au-delà de 830 nm (plateau jusqu’à l’infini). La ville est éclairée par un soleil corps noir E à 5 800 K. Couleur de la base k vue avec D :

Mk(D)=𝐍·RGB⁡(∫360830x¯(λ)DE(Dλ)ρk(Dλ)dλ)

Exemples calculés : à D = 2, les colonnes g et b s’annulent, r ne laisse qu’un soupçon de violet (0,005 ; −0,003 ; 0,041) et ir vaut (0,49 ; 0,68 ; 1,03) : une façade vue de face est la couleur, bleu pâle, de son infrarouge. À D = 0,5, seule la colonne uv survit, (0,31 ; 0,16 ; 0,06) : brun orangé.

Chaîne complète d’un fragment, identique en JavaScript (tests, règles du jeu) et en GLSL :

c=T(gamut(∑ρkMk(D))·min⁡(D4,84)·E)

Pourquoi pas le modèle d’OpenRelativity (trois raies étroites à 615, 550 et 463 nm) ? Vue de face, la luminance y tombe sous 10 % vers β = 0,28 et presque à zéro vers β = 0,5 : illisible dans la plage du jeu. Il reste disponible en préréglage de comparaison. Le ciel dégagé a un spectre continu, ∝ (550/λ)⁴ + 0,35·(550/λ)1,3 (Rayleigh et aérosols), nul sous 295 nm (ozone) : décalé, il reste lisse. Code : spectrum.js, dopplerLut.js, rel_doppler.glsl.

7. Corps noirs : T devient D·T

La loi de Planck a une propriété remarquable :

D5Bλ(Dλ,T)=Bλ(λ,DT)Bλ(λ,T)=2hc2λ51ehcλkT−1

Un corps noir vu avec le facteur D est un corps noir de température D·T. Les lampadaires (2 700 K) utilisent la ligne de LUT 𝐍·RGB(B(λ, D·T))/D⁴, normalisée, multipliée par le projecteur D⁴ : on retrouve exactement le corps noir à D·T, sans compter deux fois D⁴. La même identité sert de test de l’exposant : pour un blanc plat (r + g + b + ir + uv ≡ 1) éclairé par le soleil, D⁴·M(D)·blanc = 𝐍·RGB(B(D·5 800 K)) à 10⁻⁴ près pour D ∈ {0,5 ; 2 ; 6 ; 20}. Les lampes à raie, elles, utilisent la couleur de la raie à λ₀/D, multipliée par le même projecteur.

8. Transformation par sommet

Pour le décor immobile, OpenRelativity tourne le repère, résout le temps d’émission puis applique la transformation de Lorentz. Pour un point fixe dans la ville, ces trois étapes se réduisent à la forme fermée de la section 4, sans rotation ni arc cosinus :

// rel = P − œil (monde), r = |rel| ; uG2 = γ²/(γ+1) vient du CPU (double précision)
highp vec3 relAberrate(highp vec3 rel) {
  highp float r = length(rel);
  highp float bn = dot(uBeta, rel) / max(r, 1e-6);          // β·n
  highp float D = uGamma * (1.0 + bn);
  return (rel + (uG2 * bn + uGamma) * r * uBeta) / D;       // n′·r
}

Conservation de r. Le sommet est placé en œil + n′·r, à sa distance monde r, et non à r′ = D·r. L’image ne dépend que des directions : elle est inchangée. En revanche, near/far, le brouillard et le tri restent indépendants de β, et le test de profondeur reste juste : deux points sur un même rayon apparent ont la même direction monde, donc le même D, et leur ordre est conservé. highp est obligatoire. En vision classique, le CPU passe βeff = kβ (k de 1 à 0) : aucun k dans le GLSL. Code : rel_vertex.glsl.

9. Culling, subdivision, ciel

10. Temps retardé : Newton sécurisé

Pour un objet mobile de trajectoire p(t), on cherche le retard d = t − te ≥ 0, racine de :

G(d)=d−|𝐱obs−𝐩(t−d)|cG′(d)=1−𝐧^·𝐰c≥1−β>0

G est strictement croissante et G(0) ≤ 0 : il y a au plus une racine, qui existe si la vitesse de l’objet reste sous c dans le passé. Le solveur tient un encadrement [lo ; hi] (bornes incluses), fait un pas de Newton, bascule en bissection si le pas sort de l’encadrement (ou en pas de point fixe tant qu’aucune borne haute n’est connue), et s’arrête dès que le résidu est nul. Amorce : la valeur de l’image précédente, ou la forme fermée du mouvement uniforme (l’équation du second degré d’OpenRelativity), écrite sans annulation, avec δ = xobs − p(t) :

d=(𝛅·𝐰)+(𝛅·𝐰)2+(c2−w2)|𝛅|2c2−w2

(forme conjuguée |δ|²/(√… − δ·w) quand δ·w < 0). Deux à cinq itérations suffisent jusqu’à β = 0,99, contre plus de mille pour le point fixe. Le solveur est livré et testé ; le rendu des objets mobiles viendra avec les niveaux concernés. Les objets fixes qui changent d’état (portes, ponts) utilisent t − d/c. Code : retarded.js.

11. Effet Terrell-Penrose

On ne « voit » pas la contraction des longueurs. Terrell et Penrose ont montré en 1959 que la contraction, combinée aux différences de temps de trajet de la lumière, fait paraître un objet lointain tourné plutôt qu’aplati, et qu’une sphère garde un contour circulaire. Pour le décor immobile, le jeu n’a rien à ajouter : l’image d’une scène statique vue par un observateur en mouvement est exactement l’image au repos, aberrée. La contraction de la ville dans ton référentiel et le retard de la lumière y sont déjà inclus. Pour les objets mobiles, une correction quadratique par sommet, exacte à vitesse constante, et un Doppler relatif D = γ(1 + n·β)/(γw(1 + n·βw)) sont prévus.

12. Ce que le jeu simplifie ou ne simule pas

13. Références et code

Code source : github.com/hugohismans/aSlower ; plan détaillé et décisions dans docs/conception.md ; tests de la physique dans tests/player.test.js et tests/spectrum.test.js.

Retour au jeu Revenir au niveau intermédiaire