Buco nero: trattazione matematica e fisica
Lavoriamo in unità geometrizzate, G = c = 1: è il modo dei fisici di dire «misuriamo tutto con lo stesso righello». Fissiamo il raggio di Schwarzschild rₛ = 2M = 1, che diventa la nostra unità naturale di lunghezza. Con questa scelta l'ultima orbita circolare stabile (ISCO) cade a r = 3 e la sfera fotonica a r = 1.5. Tenete a mente questi due numeri: sono i due cerchi invisibili attorno a cui ruota tutta la storia.
Abstract
Questa pagina racconta, con tutta la matematica in chiaro, come abbiamo costruito un buco nero di Schwarzschild che vive davvero dentro il browser, in tempo reale. L'idea di fondo è semplice e radicale: non disegniamo un buco nero, lo calcoliamo. Per ogni singolo pixel lanciamo, dalla camera a ritroso, un raggio e lo facciamo cadere nello spazio-tempo curvo lungo la geodetica nulla esatta della metrica, la stessa traiettoria che percorre un fotone reale, ottenuta risolvendo numericamente le equazioni della relatività generale (tracciare all'indietro dà la stessa immagine, perché in RG i cammini della luce sono reversibili). È una simulazione vera del lensing, non un effetto grafico. Da questo unico gesto nascono da sole tutte le cose che vedete: la luce piegata, la sfera fotonica, l'ombra e il sottile photon ring, generato dalla luce che torna dopo aver girato attorno al buco. Il disco di accrescimento non ha un colore inventato: brilla del vero colore di corpo nero della sua temperatura, spostato dal redshift e dal beaming relativistico. Accanto ci sono due esperimenti: una demo che integra le orbite esatte di una particella (precessione, ISCO) e un playground in cui lanciare pianeti, stelle e comete e guardarle disgregarsi. Tutto ciò che è approssimato è dichiarato apertamente. Lo spin ora è la metrica di Kerr esatta (geodetiche nulle ray-tracciate in tempo reale), e anche il disco la segue, con bordo interno all'ISCO prograda e Doppler e redshift esatti di Kerr; il profilo radiale del flusso è quello relativistico di disco sottile (Shakura–Sunyaev) con bordo interno all'ISCO di Kerr, mentre il flusso esatto di Page–Thorne resta, nelle equazioni, il riferimento relativistico; la turbolenza è procedurale (non GRMHD) e i getti sono stilizzati. Niente trucchi nascosti.
1. Metrica di Schwarzschild e geodetiche nulle
Cominciamo dal teatro. Attorno a una massa sferica che non ruota lo spazio-tempo vuoto può avere una sola forma, la soluzione di Schwarzschild, trovata nel 1916. È il modo in cui la massa dice allo spazio e al tempo come incurvarsi. Due simmetrie ci regalano due regali: poiché la geometria non cambia né nel tempo né ruotando attorno all'asse, ci sono due quantità che un fotone conserva lungo tutto il viaggio, un'energia E e un momento angolare L. Sono i nostri punti fermi in un mondo che si piega.
Ora mettiamoci la luce. Un fotone non ha massa e viaggia su una geodetica nulla: la sua «lunghezza» spazio-temporale è esattamente zero. Confiniamolo nel piano equatoriale e l'intero problema collassa in qualcosa di sorprendentemente familiare, una pallina che rotola in una valle, con un potenziale efficace. Il trucco classico è cambiare variabile, u = 1/r: l'orbita diventa l'equazione di Binet. Rispetto a Newton c'è un solo termine in più, quel 3M u², ed è tutta la relatività generale racchiusa in tre simboli: trascurabile lontano, padrone vicino.
Quel termine fa una cosa spettacolare: a r = 3M la luce può addirittura mettersi in orbita circolare. È la sfera fotonica, un'orbita così instabile che il minimo soffio butta il fotone dentro o lo libera. Ed è il bordo dell'ombra.
Vale la pena vederlo nascere, non solo enunciarlo (l'equazione è qui sotto). Dal potenziale efficace, un fotone inverte la marcia dove la velocità radiale si annulla, e questo lega il suo parametro d'impatto al raggio di massimo avvicinamento: 1/b² = (1/r²)(1 − 2M/r). Il fotone «critico» è quello che gira sul filo, e corrisponde al massimo di quella curva. Derivando e ponendo a zero, d/dr[1/r² − 2M/r³] = −2/r³ + 6M/r⁴ = 0, si trova r = 3M: la sfera fotonica esce dal calcolo, non la mettiamo a mano. Rimettendo r = 3M nella formula del parametro d'impatto si ottiene la soglia esatta dell'ombra: 1/b_c² = (1 − 2/3)/(9M²) = 1/(27M²), cioè b_c = 3√3·M ≈ 2,6 rₛ.
Tradotto in ciò che vede l'occhio lontano: ogni raggio con parametro d'impatto b = L/E sotto questo b_c è condannato a cadere, quelli appena sopra si avvolgono attorno alla sfera fotonica e tornano, ed è da questa luce di ritorno che nasce il sottile anello luminoso. Il renderer non fa che integrare questa traiettoria, raggio per raggio (Eulero simplettico, o Runge–Kutta del 4° ordine in qualità Alta). (Carroll, Caltech; Kokkotas, Univ. Tübingen; Hirata, Ohio State; MTW.)
2. Geodetiche di tipo-tempo: orbite, ISCO, precessione
Sostituiamo il fotone con un sasso. Ora la «lunghezza» della traiettoria non è zero ma −1, il battito del suo orologio proprio, e ricompare lo stesso schema: una pallina in un potenziale efficace V_eff. Ma la valle ha una forma nuova. In Newton c'è sempre una conca dove sistemare un'orbita stabile, per quanto stretta; in Schwarzschild quella conca scompare se ci si avvicina troppo. Il punto di non ritorno è r = 6M = 3 rₛ, l'ISCO, l'ultima orbita circolare stabile: un passo più dentro e nessuna orbita regge più, il sasso scivola dentro senza appello. Questo non ha analogo newtoniano: è la firma del campo forte.
Da dove esce quel 6M? Vale la pena ricavarlo (le equazioni sono qui sotto). Un'orbita circolare vive in un punto stazionario del potenziale, dV_eff²/dr = 0: questo fissa il momento angolare richiesto a quel raggio, L²_circ = M r²/(r − 3M). Nota che diverge a r = 3M, il limite fotonico, l'orbita circolare più interna possibile in assoluto. Ma «possibile» non è «stabile»: un'orbita stabile sta sul fondo di una conca, quindi vuole anche d²V_eff²/dr² > 0. Le due richieste si scontrano avvicinandosi al buco e si toccano, con la conca che si appiattisce in un flesso, esattamente a r = 6M. Quello è l'ISCO: appena più dentro la conca sparisce, e non resta nulla a trattenere il sasso.
E le orbite che non precipitano? Non si chiudono. Lo stesso 3M u² che governava la luce qui fa ruotare lentamente l'ellisse a ogni giro: il periastro avanza e l'orbita disegna una rosetta. È, alla lettera, la matematica dei famosi 43 secondi d'arco per secolo «di troppo» nella precessione di Mercurio, l'anomalia che nel 1915 diede a Einstein la prima conferma osservativa. In campo debole l'avanzamento per orbita è Δφ ≈ 6πM/p (con p il semilato retto): minuscolo per Mercurio, enorme vicino al buco. Nella demo «Orbite» basta spingere L sotto la soglia 2√3·M per vedere la rosetta trasformarsi in tuffo.
Una nota geometrica: per la simmetria sferica ogni orbita di Schwarzschild giace in un piano fisso. Lo slider «Inclinazione» orienta quel piano nello spazio (l'integrazione resta esatta), così l'orbita si vede davvero in 3D rispetto al disco equatoriale. Le orbite genuinamente non-planari, quelle che riempiono un guscio sferico, esistono solo attorno a un buco rotante (Kerr) e sono governate da una quarta quantità conservata, la costante di Carter. Tradotto: per integrare un'orbita servono tante «leggi di conservazione» quante sono le dimensioni del moto. La simmetria sferica di Schwarzschild ne regala già abbastanza (energia, momento angolare); Kerr, che è simmetrico solo attorno all'asse, ne perderebbe una, ma Carter scoprì nel 1968 che ne sopravvive una quarta, nascosta, ed è lei a rendere le equazioni di nuovo risolvibili invece che caotiche.
3. Disco di accrescimento relativistico
Il disco è gas che spiraleggia verso il buco, e mentre cade attrito e turbolenza lo scaldano finché non splende. Il modello classico è quello di Shakura e Sunyaev (1973), poi messo in salsa relativistica da Novikov e Thorne, con una condizione al contorno elegante: all'ISCO lo sforzo si annulla, perché lì il gas perde la presa e precipita. Da quanta energia ogni anello irraggia segue, via Stefan–Boltzmann, la sua temperatura, che cresce verso il centro come r⁻³ᐟ⁴. Il renderer usa questo profilo di disco sottile in forma analitica, con il bordo interno inchiodato all'ISCO di Kerr; l'integrale esatto orbita-mediato di Page–Thorne è quello che trovi nelle equazioni qui sotto, il riferimento relativistico da cui il profilo discende.
Ma cosa manca, davvero? Un disco vero non è una superficie liscia che irraggia: è plasma (gas ionizzato) intrecciato a campi magnetici, e a spingerlo verso il buco è una turbolenza ben precisa. Qui entra la sigla che uso spesso senza spiegarla: GRMHD, «magnetoidrodinamica in relatività generale». Vuol dire risolvere insieme, sulla griglia dello spazio-tempo curvo, le equazioni del fluido e quelle del campo magnetico (Maxwell). Serve perché nei dischi è l'instabilità magnetorotazionale, la MRI (un'instabilità del plasma magnetizzato in rotazione differenziale che Balbus e Hawley nel 1991 mostrarono applicarsi ai dischi), a trasportare il momento angolare verso l'esterno e a lasciar cadere il gas. Senza campi magnetici, un disco non saprebbe nemmeno come accrescere. Una simulazione GRMHD calcola tutto questo: la turbolenza reale, l'emissione di sincrotrone degli elettroni che spiraleggiano nei campi, il trasporto radiativo completo. È lo stato dell'arte (i codici si chiamano HARM, Athena++, BHAC, KORAL) ed è ciò che ha permesso di interpretare le immagini dell'Event Horizon Telescope. Ma costa minuti o ore di calcolo per singolo fotogramma, su un supercomputer. Dentro i ~16 millisecondi di uno shader nel browser non c'è speranza. Per questo la nostra struttura gassosa è turbolenza procedurale: ne imita l'aspetto, non la fisica. Il lato termico (temperatura, colore, redshift, beaming) è invece quello giusto.
E qui c'è la parte che ci piace di più: il colore non lo scegliamo noi. Ogni punto del disco ha una temperatura, e a quella temperatura corrisponde un vero colore di corpo nero, lo stesso di un ferro arroventato che passa dal rosso all'arancio al bianco-azzurro man mano che scalda. Convertiamo quella temperatura nel suo colore lungo il locus planckiano e lo mostriamo, niente gradiente arbitrario. Il primo a calcolare l'immagine di un disco così, a mano, nel 1979, fu Jean-Pierre Luminet, e somigliava già a Interstellar. (Shakura–Sunyaev 1973; Novikov–Thorne 1973; Luminet 1979.)
Una parola sui bordi, perché raccontano due fisiche opposte. Quello interno è tagliente sul serio: all'ISCO il gas se ne va e la luce semplicemente finisce lì. Quello esterno no: dipende da dove il disco viene alimentato, ed è sfumato. Nella realtà la brillanza scende già da sola come r⁻³; noi aggiungiamo una dissolvenza morbida e larga che si spegne con pendenza nulla, così l'orlo non sembra tagliato col coltello. Inoltre il disco è reso come un mezzo a profondità ottica: opaco dove è brillante (interno), traslucido dove è fioco (esterno), con l'opacità di ogni attraversamento del piano ∝ luminosità/|cosθ|, così di taglio (cammino lungo nel gas) appare denso, di faccia sottile, senza spessore geometrico e senza riga nera.
4. Trasporto radiativo ed effetti relativistici
Come cambia la luce lungo il tragitto? C'è una quantità quasi magica che resta costante: l'intensità divisa per la frequenza al cubo, Iᵥ/ν³. È il teorema di Liouville travestito: dice che i fotoni, nel loro spazio delle fasi, non si accalcano né si diradano. Se la conosciamo dove la luce nasce, la conosciamo anche qui all'occhio. Tutto il lavoro si riduce allora a un solo numero: il fattore g, il rapporto tra la frequenza che riceviamo e quella emessa.
Quel g mette insieme tre effetti in un colpo solo: il tempo che scorre più lento vicino alla massa (redshift gravitazionale), la dilatazione del tempo del gas che sfreccia, e il Doppler di chi viene verso di noi o se ne va. Un corpo nero visto con fattore g resta un corpo nero, ma a temperatura g·T, quindi g sposta insieme colore e luminosità. Il risultato è una firma inconfondibile: il lato del disco che ci viene incontro è abbagliante e bluastro, quello che fugge è cupo e rosso. E poiché la luminosità va come g⁴, basta poco perché un lato domini l'altro. (Luminet 1979; Vincent et al. 2011, GYOTO.)
Ma perché proprio la quarta potenza, e non la prima o la seconda? Vale la pena smontarla, perché è uno di quei conti dove tre cose diverse cospirano allo stesso esponente. Pensa ai fotoni come a una pioggia che conti. (1) Ogni goccia che arriva porta un'energia hν, e la frequenza è già spostata di g: un fattore g. (2) Ne arrivano di più al secondo, perché anche il ritmo degli arrivi è dilatato dallo stesso g (l'orologio della sorgente che si avvicina «ticchetta» più in fretta per noi): secondo fattore g. (3) E il fascio che la sorgente emette largo viene strizzato in avanti dall'aberrazione relativistica (chi corre verso di noi concentra la sua luce in un cono più stretto), così l'angolo solido si contrae come g²: altri due fattori. Uno per uno per due: g⁴. È anche il motivo per cui l'invariante naturale non è l'intensità Iᵥ ma Iᵥ/ν³: quel ν³ è esattamente il prodotto «energia × ritmo × angolo solido» che si trascina dietro il fattore g, quindi dividendolo via resta un numero che il viaggio non tocca più. Il renderer lavora proprio così: porta Iᵥ/ν³ dal disco all'occhio senza cambiarlo, e solo alla fine moltiplica per il g⁴ del punto di emissione.
5. Returning radiation e photon ring
Ecco la parte che rende un buco nero così luminoso. Alcuni raggi non vanno dritti e non cadono: sfiorano la sfera fotonica, fanno mezzo giro, un giro, due giri attorno al buco, e poi ripartono. È la returning radiation: la luce del disco che torna a mostrarsi dopo essere passata dietro l'orizzonte. Per coglierla il renderer infittisce i passi proprio dove la traiettoria si avvolge, là dove un passo grossolano perderebbe il giro.
Il risultato è una scala di immagini del disco sempre più sottili, impilate una accanto all'altra, che si stringono verso il bordo dell'ombra. Ogni giro in più rimpicciolisce l'immagine di un fattore fisso, in modo esponenziale, con esponente di Lyapunov γ = π per Schwarzschild, finché si fondono nel filo luminoso del photon ring. La cosa di cui andiamo fieri: non lo disegniamo. Emerge da solo dalla vera luce del disco che ritorna, con lo stesso colore, senza nessun anello finto sovrapposto. (Luminet 1979; Gralla, Holz & Wald 2019; Johnson et al. 2020, EHT.)
Quanto in fretta si stringono, questi anelli? Dietro c'è un numero pulito, e si capisce pensando a cosa significa «orbita instabile». Un raggio che sfiora la sfera fotonica è come una matita in equilibrio sulla punta: la più piccola deviazione cresce, e cresce in modo esponenziale. Il tasso di quella crescita è l'esponente di Lyapunov dell'orbita, e per Schwarzschild vale esattamente γ = π. Girato al rovescio, dice questo: per fare un giro in più attorno al buco prima di scappare, un raggio deve partire più vicino al valore critico b_c di un fattore e^{−π} ≈ 1/23. Quindi ogni immagine successiva del disco è ~23 volte più sottile e ~23 volte più fioca della precedente. È una scala geometrica spietata: il primo anello lo vedi, il secondo a malapena, il terzo è già sotto ogni soglia pratica. Ecco perché «il» photon ring, nelle immagini reali, è di fatto uno solo: gli altri sono lì, schiacciati l'uno sull'altro contro il bordo dell'ombra. Noi non li disegniamo, li lasciamo emergere infittendo i passi dell'integratore proprio dove la traiettoria si avvolge.
Lo stesso meccanismo disegna la sua firma sul cielo stellare, non solo sul disco. Ogni stella di sfondo ha in realtà infinite immagini distinte: quella primaria (raggi che non orbitano mai), quella secondaria (raggi che orbitano una volta), la terziaria, e via così. Il confine tra un ordine e il successivo è una caustica matematica vera — un raggio appena fuori non orbita, uno appena dentro orbita una volta intera — e genera anelli circolari nitidi nel campo stellare, annidati attorno all'ombra con spaziatura che si dimezza ogni volta di un fattore e^{−π} ≈ 1/23. Questi cerchi non sono un artefatto grafico: appaiono in ogni ray tracer GR corretto, incluso il codice DNGR che ha prodotto Gargantua per Interstellar (James et al. 2015). Se li vedi nel render, significa che l'integratore sta risolvendo correttamente la struttura caustica del lensing.
6. Rotazione: Kerr e frame-dragging
I buchi neri veri ruotano, e un buco nero che ruota fa qualcosa di stupefacente: trascina lo spazio stesso con sé, come un vortice trascina l'acqua. Abbastanza vicino non puoi stare fermo nemmeno accendendo i motori al massimo: lo spazio ti porta in giro. La metrica corretta è quella di Kerr, e quel trascinamento (frame-dragging) ha una velocità angolare ω = −g_{tφ}/g_{φφ} ben precisa.
Da dove viene quella ω? Immagina di lasciar cadere qualcosa «dritto», con momento angolare nullo. In Kerr non scende dritto: viene trascinato in rotazione, e la sua velocità angolare è esattamente ω = −g_{tφ}/g_{φφ}, la conseguenza diretta del termine misto g_{tφ} che la rotazione aggiunge alla metrica. Lontano svanisce come 1/r³ (è l'effetto Lense–Thirring, lo stesso misurato attorno alla Terra dalla sonda Gravity Probe B); vicino diventa irresistibile. Tanto che, dentro una superficie detta ergosfera, nessuno può più restare fermo rispetto alle stelle lontane: per farlo dovrebbe superare la velocità della luce. È la regione dove la componente g_{tt} cambia segno; il suo bordo all'equatore tocca r = 2M, cioè fuori dall'orizzonte. Lì lo spazio scorre più in fretta di quanto chiunque possa nuotargli contro.
E qui il renderer fa sul serio: con lo slider Spin integriamo le geodetiche nulle ESATTE di Kerr, in forma di Kerr–Schild cartesiana. Questa forma non ha la singolarità di coordinate di Boyer–Lindquist ed è asintoticamente piatta, così il momento iniziale del fotone alla camera (lontana) è semplicemente la direzione del raggio, senza tetrade da sbagliare. La tetrade è il sistema di riferimento ortonormale locale dell'osservatore (i suoi quattro «righelli e orologio»): in coordinate scomode va costruita a mano per tradurre ciò che la camera misura in ciò che la metrica chiama momento, ed è un classico punto d'errore. Qui, asintoticamente piatta, quella traduzione è l'identità. Ne emergono da soli l'ombra asimmetrica, il photon ring spostato e schiacciato e il trascinamento dei sistemi inerziali: la stessa fisica del Gargantua di Interstellar (James, von Tunzelmann, Franklin & Thorne 2015), lì però ray-tracciata offline, qui in tempo reale nel browser. Anche il disco ora segue Kerr: bordo interno all'ISCO prograda (Bardeen) e Doppler/redshift esatti dalla metrica di Kerr (g = 1/[uᵗ(1−Ωλ)] con λ momento angolare assiale conservato del fotone); e il profilo radiale del flusso è quello relativistico di disco sottile (Shakura–Sunyaev) con bordo interno all'ISCO di Kerr, così la regione calda si stringe verso l'ISCO più piccolo man mano che il buco accelera. (Bardeen 1972/1973 per ISCO e geodetiche di Kerr; il flusso esatto di Page–Thorne 1974 è mostrato nelle equazioni come riferimento relativistico.) I dati più recenti danno ragione a questa impostazione: l'analisi con reti neurali bayesiane dei dati EHT (Janssen et al. 2025) indica per Sgr A* uno spin quasi massimale (a ≈ 0,8–0,9) e un disco quasi frontale, proprio il regime in cui questi effetti di Kerr sono più marcati.
7. Geometria dello spazio: il paraboloide di Flamm
Il telo elastico con la palla da bowling è un'immagine bellissima e quasi sempre sbagliata. La griglia che potete accendere, invece, è quella giusta: il paraboloide di Flamm (1916). Se prendete la fetta equatoriale dello spazio attorno al buco (t, θ = π/2 costanti) e la immergete, senza stiracchiarla, in uno spazio euclideo a tre dimensioni, ottenete esattamente quell'imbuto. Le distanze misurate sulla superficie sono le vere distanze dello spazio curvo di Schwarzschild: non una metafora, ma la sua geometria intrinseca disegnata fedelmente. Quando il buco ruota, l'imbuto si attorciglia: è il frame-dragging che si fa vedere.
Da dove esce quella forma a imbuto? Si ricava in tre righe, e sono tre righe che vale la pena seguire. Congela il tempo e mettiti sul piano equatoriale: la distanza vera tra due punti vicini, nello spazio di Schwarzschild, è dℓ² = (1−rₛ/r)⁻¹ dr² + r² dφ². Quel fattore (1−rₛ/r)⁻¹ davanti a dr² è tutto il punto: dice che per spostarti di un metro «di coordinata» in direzione radiale, vicino al buco, devi attraversare PIÙ spazio di un metro. Ora chiediti quale superficie di rotazione z(r), nello spazio euclideo ordinario, avrebbe quelle stesse distanze: su una superficie del genere dℓ² = (1+(dz/dr)²) dr² + r² dφ². Perché le due coincidano basta uguagliare i coefficienti di dr², e salta fuori (dz/dr)² = (1−rₛ/r)⁻¹ − 1. Integrando si ottiene z(r) = 2√(rₛ(r−rₛ)). L'imbuto non è scelto per somiglianza: è l'unica superficie che riproduce, senza barare, la geometria intrinseca di quella fetta di spazio.
Un avvertimento, però, perché è qui che il «telo elastico» inganna davvero. Questo imbuto è una fetta di solo SPAZIO, fotografata a un istante: non contiene il tempo. E in relatività le cose cadono soprattutto perché sono deviate nel TEMPO curvo, non perché «rotolano giù» per una pendenza spaziale. La pallina sul telo, in fondo, accelera per la gravità della Terra che tira verso il basso, sotto al telo: è un ragionamento circolare, spiega la gravità con la gravità. L'imbuto di Flamm non fa questo errore: non spiega perché si cade, misura soltanto quanto spazio in più c'è da attraversare avvicinandosi al buco. La caduta vera la calcolano le geodetiche, che vivono nello spazio-tempo intero, ed è esattamente quello che integra il renderer.
8. Playground: dinamica dei corpi
Il playground baratta un po' di esattezza per il gusto di lanciare le cose e vedere che succede. Invece delle geodetiche complete usa un trucco famoso: il potenziale di Paczyński–Wiita, Φ = −GM/(r − rₛ). Sembra Newton, ma quel −rₛ al denominatore fa la magia: riproduce esattamente l'ISCO a 6M e il tuffo finale, gli effetti di campo forte che a Newton mancano. In cambio possiamo permetterci la vera gravità reciproca tra tutti i corpi (un N-corpi smorzato). Il tasto «Sistema» costruisce d'un colpo un piccolo sistema planetario inclinato, con il buco nero al posto della stella centrale, come Gargantua.
E quando un corpo si avvicina troppo? Viene fatto a spaghetti. La marea, cioè la differenza di gravità tra la faccia vicina e quella lontana del corpo, vince la sua presa e lo stira. La fisica chiave (Rees 1988) è uno spread di energia: metà dei detriti rallenta e ricade, avvolgendosi attorno al buco e alimentando il disco; l'altra metà accelera e viene scagliata via in una lunga coda. La ricaduta segue la legge famosa Ṁ ∝ t⁻⁵ᐟ³. Ancora prima della disgregazione completa la stella perde gas dalla calotta rivolta al buco, un velo che si allarga via via che affonda. (Paczyński–Wiita 1980; Rees 1988.)
Da dove sbuca quel −5/3, l'esponente che firma ogni disruzione mareale mai osservata? È sorprendentemente elementare: è solo Keplero. Nell'istante in cui la stella viene stirata, ogni suo pezzetto si ritrova con un'energia leggermente diversa (chi era sul lato vicino al buco perde energia, chi era sul lato lontano ne guadagna), e questa gamma di energie ε è, in prima approssimazione, distribuita in modo uniforme. Ogni pezzetto legato (ε < 0) torna indietro su un'ellisse, e la terza legge di Keplero lega il suo periodo all'energia: T ∝ |ε|⁻³ᐟ². I detriti rientrano dunque in ordine: prima i più legati (|ε| grande, periodo corto), poi via via i più pigri. Il ritmo con cui la massa ricade è Ṁ = (dM/dε)·(dε/dt): il primo fattore è quasi costante (la gamma è piatta), e il secondo lo ricavi invertendo Keplero: da T ∝ |ε|⁻³ᐟ² e t = T segue ε ∝ t⁻²ᐟ³, quindi dε/dt ∝ t⁻⁵ᐟ³. Ecco il −5/3: non un numero calato dall'alto, ma la firma della terza legge di Keplero applicata a una nuvola di detriti che torna a casa in fila per energia. (Rees 1988.)
Due corpi che si toccano non si attraversano: si fondono, conservando massa e quantità di moto (il raggio si combina per volume). E col tasto «Onde grav.» si accende la reazione di radiazione: i corpi irraggiano onde gravitazionali, perdono energia e spiraleggiano verso il buco, un EMRI in miniatura, con la caduta che accelera vertiginosamente (la «chirp») perché la potenza irraggiata cresce come 1/r⁵, fino al plunge o alla fusione. L'effetto reale è minuscolo, ∝ (v/c)⁵: qui è amplificato per renderlo visibile, esattamente come l'accelerazione del tempo. (Peters 1964.)
Nel Playground WebGPU 300.000 particelle seguono orbite kepleriane di Kerr esatte con piccole perturbazioni epicicliche (frequenza radiale κ, la stessa che si annulla all'ISCO): il disco di accrescimento è vivo, non un'immagine dipinta. Il tasto «Ringdown» simula una perturbazione: il photon ring (la returning radiation, raggi che hanno fatto almeno un giro attorno al buco) pulsa con una sinusoide smorzata A(t) = exp(−ω_I·t)·cos(ω_R·t) calibrata sui valori tabulati dei modi quasi-normali di Kerr l=2 (Leaver 1985). Il fattore di qualità Q = ω_R/(2ω_I) = 2,1 + 11,3·a³ è fisicamente corretto: a spin zero il buco suona ~2 volte, a spin a≈0,99 ne suona ~13 prima di quietarsi — la stessa firma che LIGO misura nella coda di ogni merger. Muovi lo spin e osserva come cambia.
9. Metodi numerici del renderer
Lensing: si integrano le geodetiche nulle ESATTE di Kerr nella forma hamiltoniana di Kerr–Schild (il drift dx/dλ = ∂H/∂p è in forma chiusa, il kick dp/dλ = −½∇ₓHq per differenze finite centrate), con passo adattivo raffinato vicino alla sfera fotonica per la returning radiation. Due integratori selezionati dalla qualità: Eulero simplettico (1° ordine, un solo gradiente per passo) per qualità Media/Bassa, e Runge–Kutta del 4° ordine per qualità Alta. L'RK4 porta l'errore di deflessione a ~10⁻⁷ rad e mantiene l'invariante nullo Hq costante a ~10⁻⁶ (verificato offline contro una soluzione di riferimento), al prezzo di quattro valutazioni del gradiente per passo. Il tone mapping è ACES filmico seguito da correzione gamma.
Playground: la dinamica nel potenziale di Paczyński–Wiita usa sub-passi adattivi con gravità reciproca smorzata (softening ε) e velocità limitate a c. Il passo è però vincolato alla stabilità: non supera mai una frazione del tempo dinamico locale vicino al buco (criterio di tipo CFL, h ≤ min(h_max, C·(r−rₛ))). Se il budget di sub-passi non basta in prossimità dell'orizzonte, la simulazione avanza meno tempo simulato (rallenta dolcemente) invece di allungare il passo e iniettare energia: così il sistema a N-corpi resta stabile anche con molti corpi. L'aggiornamento semi-implicito (simplettico) conserva l'energia, quindi le orbite legate restano legate e le lune orbitano con la velocità circolare della stessa forza addolcita usata dall'integratore (non si sganciano). I detriti mareali vivono in un pool a dimensione fissa (ring buffer). Le geodetiche di tipo-tempo della demo «Orbite» sono integrate nell'azimuth φ con l'equazione orbitale esatta.
Quanto è affidabile l'integrazione? La demo «Orbite» mostra dal vivo il drift dell'invariante di energia C dell'orbita (il primo integrale dell'equazione, legato a E): con il passo simplettico di Yoshida al 6° ordine resta dell'ordine di 10⁻¹³ e oscillante, non cresce: la prova numerica che l'energia non si disperde e le orbite legate restano legate. (Il leapfrog/Yoshida richiede un'hamiltoniana separabile come questa; per il lensing, hamiltoniana non-separabile, usiamo invece RK4.)
10. Robustezza del ray-marching e artefatti risolti
Il budget di passi per raggio è finito: per non esaurirlo nel solo tragitto fino al buco (cosa che, zoomando lontano, faceva glitchare disco e ombra), i raggi che partono oltre la sfera d'influenza R_far vengono avanzati analiticamente in linea retta (lo spazio-tempo lì è praticamente piatto) e il march geodetico parte solo dove la curvatura conta. Per questo l'inquadratura regge anche a grande distanza. I raggi che la sfera d'influenza non la attraversano mai non campionano però un cielo «dritto»: ricevono la deflessione analitica di campo debole di Einstein — l'angolo α = 4M/b, pesato per il solo tratto dalla camera all'infinito — così il lensing decade con continuità all'aumentare del parametro d'impatto invece di spegnersi di colpo sul bordo della sfera, che altrimenti appariva nel cielo come una grande cucitura circolare. Vicino alla sfera fotonica il passo è invece raffinato, per risolvere la returning radiation e i sub-anelli; e dentro lo spessore del disco volumetrico 3D il passo è vincolato alla scala di altezza locale H(r), in proporzione alla pendenza verticale del raggio, così la gaussiana idrostatica è campionata abbastanza fitta da non mostrarsi «a lastre» (banding) — mentre i raggi radenti al piano, che di variazione verticale non ne vedono, mantengono il passo lungo e non esauriscono il budget.
Composizione di profondità: il buco lensato scrive la profondità (gl_FragDepth) dal punto d'impatto in coordinate mondo, così i corpi 3D, le particelle e i detriti del playground vengono occlusi correttamente da disco e orizzonte invece di disegnarsi sopra. Il tone mapping è ACES filmico con bloom a soglia alta e il fondo cielo ha un floor prossimo allo zero: lo spazio profondo resta nero (paradosso di Olbers), come dev'essere.
Aliasing del disco: la turbolenza non è una texture ripetuta (che lasciava una «quadrettatura» e una linea di giunzione) ma un FBM di rumore a gradiente (Perlin) con reticolo ruotato a ogni ottava e domain warp, così non compaiono né scacchiera né faccette del reticolo. Per togliere lo shimmer prospettico a vista radente, ogni ottava è inoltre band-limitata (FBM filtrato, stile mip): la sua frequenza viene confrontata con l'impronta del pixel sul disco, stimata analiticamente da distanza e angolo di attraversamento (NON da fwidth del punto d'impatto ray-marciato, che variava a blocchi 2×2 e generava una «rete» allineata allo schermo), e l'ottava sfuma verso la sua media quando il periodo scende sotto un pixel. Il photon ring non è disegnato analiticamente (niente «doppio anello»): emerge dalla luce reale del disco tramite la returning radiation. Infine il post-processing gira in una pipeline a 16-bit (float) con un dithering finale, così i gradienti lisci del disco non mostrano il banding a 8-bit.
Stili di resa opzionali. «Starless» evoca il look fotografico del raytracer di Riccardo Antonelli (rantonels/starless) arricchendo il cielo procedurale in una Via Lattea strutturata con bande di polvere e stelle più dense: poiché è campionato con la direzione del raggio GIÀ lensata, il cielo ricco viene davvero deformato dal buco (la firma di starless), senza spedire una panoramica da molti MB. «EHT» rende a risoluzione bassissima (beam-limited) per imitare le immagini reali dell'Event Horizon Telescope di M87* e Sgr A*.
11. Limiti: cosa NON è (onestà scientifica)
Lo spin è ora la metrica di Kerr esatta (geodetiche nulle ray-tracciate in tempo reale), e il disco la segue per l'ISCO e per il Doppler/redshift; il profilo radiale del flusso è invece quello relativistico di disco sottile (Shakura–Sunyaev) con bordo interno all'ISCO di Kerr, non l'integrale di Page–Thorne calcolato in tempo reale (lo mostriamo nelle equazioni come riferimento). Il disco è otticamente spesso con emissione di corpo nero: la sua struttura gassosa turbolenta è uno stand-in procedurale della turbolenza magnetorotazionale (MRI), non una soluzione GRMHD; non modella autogravità, spessore verticale né polarizzazione. Il photon ring emerge dalla returning radiation ma le immagini di ordine molto alto non sono risolte; i getti relativistici sono un'aggiunta stilizzata (otticamente sottile), non MHD. Le stelle di sfondo sono procedurali (il loro lensing è reale). Nel playground i corpi sono occlusi dal disco/orizzonte ma non lensati, l'integrazione è pseudo-newtoniana e l'illuminazione del disco è una luce centrale (approssimazione).
In sintesi, ciò che NON è possibile in questo mezzo, e perché. (i) Il lensing di Kerr (geodetiche nulle) lo facciamo in tempo reale, ma una soluzione GRMHD del disco in metrica di Kerr (il trasporto radiativo completo del gas magnetizzato) richiede minuti–ore per fotogramma su cluster di calcolo: incompatibile con i ~16 ms a fotogramma di un fragment shader WebGL. (ii) Le immagini del photon ring di ordine molto alto (n ≳ 2) richiedono una precisione numerica e un numero di passi per pixel che il budget real-time non concede. (iii) Il trasporto radiativo completo (scattering multiplo, polarizzazione, opacità dipendente dalla frequenza), lo spessore verticale, l'autogravità e l'idrodinamica del disco e degli stream mareali sono problemi 3D tempo-dipendenti, fuori portata per un singolo passaggio di shading. (iv) Lensare e integrare in GR ogni corpo del playground moltiplicherebbe il costo per il numero di corpi, perdendo l'interattività. Tutto questo si fa, ma offline, con i codici GR citati (GYOTO, RAPTOR, ipole…): è esattamente la ragione per cui esistono.
12. Differenze con Interstellar (Gargantua / DNGR)
Gargantua, il buco nero di Interstellar (2014), fu calcolato dalla Double Negative con un motore dedicato, il DNGR (Double Negative Gravitational Renderer), descritto in un vero articolo scientifico (James, von Tunzelmann, Franklin & Thorne 2015). La fisica di base è LA STESSA che usiamo qui: geodetiche nulle esatte della metrica di Kerr. Quello che cambia è tutto il resto, ed è istruttivo capire perché.
Tempo e risoluzione. Il DNGR girava OFFLINE su una render farm: fino a ~ore per fotogramma a risoluzione IMAX (decine di megapixel), con centinaia di TB di dati per alcune sequenze. Noi calcoliamo lo stesso lensing in ~16 ms per fotogramma nel browser. Per riuscirci tracciamo un singolo raggio per pixel; il DNGR tracciava interi FASCI di raggi (ray bundles) e ne propagava la sezione, così da poter anti-aliasare e filtrare in modo accurato i bordi sottilissimi (il photon ring, gli orli del disco), un lusso che a 16 ms non ci possiamo permettere e che sostituiamo con supersampling, band-limiting del rumore e dithering.
Il disco. Il loro disco era un modello artistico-volumetrico costruito ad hoc dagli artisti (con texture, spessore, volute), non una simulazione GRMHD; il nostro è una superficie otticamente spessa con emissione di corpo nero reale e flusso relativistico di disco sottile, testurizzata con turbolenza procedurale. Entrambi sono modelli del gas, non soluzioni magnetoidrodinamiche.
Una scelta NARRATIVA famosa: nel film il disco è quasi simmetrico in luminosità. In realtà il beaming relativistico rende un lato accecante e l'altro cupo (asimmetria Doppler), e Christopher Nolan e Kip Thorne scelsero di ATTENUARLA perché un'immagine così sbilanciata avrebbe confuso il pubblico. Noi facciamo l'opposto: mostriamo l'asimmetria Doppler vera (puoi accenderla/spegnerla) perché lo scopo è didattico, non cinematografico. Per lo stesso motivo loro usarono uno spin quasi estremo (a/M ≈ 0.999, per la dilatazione temporale della trama); da noi lo spin è uno slider.
In una frase: stessa metrica, stesse geodetiche; loro offline, fotorealistici, con licenze artistiche al servizio della storia; noi in tempo reale, interattivi, con la fisica reale messa a nudo e ogni approssimazione dichiarata.
13. Scelte di progetto: perché così
Ogni decisione qui nasce da un'unica tensione: massima verità fisica dentro i ~16 ms per fotogramma di un fragment shader nel browser. Ecco le scelte principali e il loro perché.
Calcolare, non disegnare. Il lensing è il «wow» ed è calcolabile esattamente, quindi lo integriamo davvero (geodetiche), raggio per raggio. L'emissione del disco invece NON è calcolabile in tempo reale (servirebbe la GRMHD), quindi usiamo un modello procedurale fisicamente motivato e lo DICHIARIAMO. La regola «fail loud, never fake» attraversa tutto il progetto: niente metriche inventate, niente colori arbitrari, ogni approssimazione scritta nero su bianco.
Forma di Kerr–Schild (non Boyer–Lindquist). Le coordinate di Boyer–Lindquist hanno una singolarità all'orizzonte; Kerr–Schild no, ed è asintoticamente piatta: così il 4-momento iniziale del fotone alla camera lontana è semplicemente la direzione del raggio (E=1), senza tetrade dell'osservatore da sbagliare e senza instabilità all'orizzonte.
Il giusto integratore per ogni problema. Il lensing ha un'hamiltoniana NON separabile → usiamo RK4 (4° ordine, esatto a ~10⁻⁷ rad per un raggio); la demo orbitale ha l'equazione di Binet SEPARABILE → usiamo Yoshida simplettico al 6° ordine (deriva dell'energia ~10⁻¹³); il playground baratta l'esattezza per l'interattività con il potenziale pseudo-newtoniano di Paczyński–Wiita, che riproduce ISCO e plunge ma permette la gravità a N-corpi (lensare e integrare in GR ogni corpo ucciderebbe l'interattività).
Disco a profondità ottica, non a fetta geometrica: elimina il bordo nero e il banding e dà una transizione radiale morbida. Pipeline a 16-bit + dithering: niente terrazzamento a 8-bit sui gradienti lisci. Colore dalla temperatura (corpo nero), non da una palette. Flusso relativistico di disco sottile, non un gradiente arbitrario. Avanzamento analitico fino alla sfera d'influenza e passo adattivo: spendiamo il budget di passi dove conta (vicino al buco), non nel vuoto.
Qualità adattiva, una resa per ogni dispositivo. Lo stesso shader deve girare su un telefono entry-level e su una workstation con GPU discreta, e in WebGL non esiste codice specifico per vendor (un solo GLSL per tutti). La leva reale è dosare il carico. La modalità «Auto» rileva la GPU (via WEBGL_debug_renderer_info: NVIDIA/Radeon/Apple-Silicon desktop, Adreno/Mali/Apple su mobile) e sceglie un profilo: sul desktop di fascia alta integratore di Yoshida-6, supersampling 2× e disco volumetrico; su mobile l'integratore di Eulero (più economico) con più passi e DPR limitato, perché lì il collo di bottiglia è il fill-rate, non i passi. Poiché alcuni browser mascherano la GPU per privacy, un governatore misura gli FPS (media mobile esponenziale) e scala dinamicamente il carico: su mobile prima la risoluzione di rendering (il collo di bottiglia è il fill-rate), poi — solo se non basta — il numero di passi; su desktop i passi. Ridimensionare il canvas è però esso stesso un piccolo scatto, quindi il governatore è anti-oscillazione: una risoluzione che ha fatto scendere gli FPS diventa un tetto a cui non si risale (altrimenti il vsync, quantizzando gli FPS a 60↔30, lo farebbe rimbalzare per sempre tra le due soglie), il recupero attende un tempo di calma e la media FPS riparte da zero dopo ogni aggiustamento, così lo scatto del resize non inquina la misura successiva. Le modalità pesanti (Ultra, supersampling, disco 3D) restano isolate dietro #define GLSL compilati solo quando servono, così lo shader di default su mobile resta piccolo e compila ovunque.
Tre modalità separate (lensing, orbite, playground) perché separano preoccupazioni diverse: GR rigorosa a un corpo contro interattività a molti corpi. Cielo procedurale leggero di default, con l'opzione «Cielo reale» (foto NASA equirettangolare lensata) quando si vuole il cielo vero. E infine accessibilità: bilingue, gratis, senza pubblicità, usabile da telefono: la fisica vera dovrebbe essere alla portata di tutti.
Le immagini reali: M87* e Sgr A*
Le immagini dell'Event Horizon Telescope non sono fotografie in senso ordinario: sono mappe di interferometria radio a bassissima lunghezza d'onda (1,3 mm, 230 GHz), costruite combinando i segnali di telescopi sparsi su tutto il pianeta per simulare un radiotelescopio grande come la Terra. Il risultato è una risoluzione angolare di ~20 microarcosecondi per M87* e ~25 per Sgr A* — appena sufficiente a risolvere l'ombra del buco nero.
L'anello arancione non è una fiamma: è la luce millimetrica del plasma caldo intorno al buco, amplificata dal lensing gravitazionale. La luminosità asimmetrica (più brillante a sinistra per M87*, variabile nel tempo per Sgr A*) è esattamente il beaming Doppler che mostriamo nel nostro render. L'ombra centrale corrisponde al parametro b_crit della formula nel pannello Scala reale — il confronto quantitativo in microarcosecondi è disponibile lì.


EHT Collaboration / ESO · CC BY 4.0 · eso1907a (M87*, 2019), eso2208-eht-mwa (Sgr A*, 2022)
Soluzioni open: cosa possiamo (e non possiamo) integrare
Esistono ottimi codici di ray-tracing relativistico open source, GYOTO (Observatoire de Paris), RAPTOR, ipole, grtrans, Blacklight, e l'implementazione aperta del metodo di Luminet. Sono però codici offline (C/C++/Python) che calcolano singoli fotogrammi in minuti/ore: non sono eseguibili in tempo reale in un fragment shader WebGL nel browser.
Quello che integriamo davvero sono le loro formulazioni fisico-matematiche: la geodetica di Schwarzschild, il disco di Novikov–Thorne, il fattore g e l'invariante Iᵥ/ν³, il colore di corpo nero. Il nostro shader le reimplementa in GLSL e le cita; non incorpora il codice esterno. Dichiararlo è parte della regola «fail loud, never fake».
Domande frequenti
Le equazioni usate sono reali e corrette?
Sì per la geometria del lensing e per le orbite: l'integrazione delle geodetiche di Schwarzschild (nulle e di tipo-tempo) è esatta e riproduce sfera fotonica, anello di Einstein, ombra, ISCO e precessione del periastro. Velocità orbitale GR, redshift, invariante di Liouville e beaming bolometrico g⁴ usano le formule esatte; il colore è il vero corpo nero della temperatura locale; il photon ring emerge dalla returning radiation.
Qual è la differenza tra la demo «Orbite» e il «Playground»?
La demo «Orbite» integra la geodetica di tipo-tempo esatta di Schwarzschild per un singolo corpo (precessione e ISCO esatti). Il playground usa il potenziale pseudo-newtoniano di Paczyński–Wiita, che riproduce gli effetti forti (ISCO, caduta) ma permette la gravità reciproca a N-corpi, un compromesso esattezza/interattività.
Posso integrare GYOTO o un codice GR completo?
Non in tempo reale nel browser: sono codici offline. Reimplementiamo le loro formulazioni in GLSL e le citiamo. Per immagini scientifiche di precisione si usano proprio quei codici.
Bibliografia e fonti
- S. M. Carroll, «Lecture Notes on General Relativity», geodetiche di Schwarzschild (Caltech).
- K. Kokkotas, «Particle Trajectories & The Classical Tests», Relatività Generale, Universität Tübingen.
- C. Hirata, «Geodesics in the Schwarzschild geometry», ph6820, The Ohio State University.
- J.-P. Luminet (1979), «Image of a spherical black hole with thin accretion disk», Astronomy & Astrophysics 75, 228.
- S. E. Gralla, D. E. Holz & R. M. Wald (2019), «Black hole shadows, photon rings, and lensing rings», Physical Review D 100, 024018.
- M. D. Johnson et al. (2020), «Universal interferometric signatures of a black hole's photon ring», Science Advances 6, eaaz1310.
- N. I. Shakura & R. A. Sunyaev (1973), Astronomy & Astrophysics 24, 337.
- I. D. Novikov & K. S. Thorne (1973), «Astrophysics of Black Holes», in Black Holes (Les Houches).
- D. N. Page & K. S. Thorne (1974), «Disk-accretion onto a black hole. Time-averaged structure of accretion disk», ApJ 191, 499.
- B. Paczyński & P. J. Wiita (1980), Astronomy & Astrophysics 88, 23.
- M. J. Rees (1988), «Tidal disruption of stars by black holes…», Nature 333, 523.
- P. C. Peters (1964), «Gravitational radiation and the motion of two point masses», Physical Review 136, B1224.
- J. M. Bardeen (1973), «Timelike and null geodesics in the Kerr metric», in Black Holes (Les Houches).
- H. Yoshida (1990), «Construction of higher order symplectic integrators», Physics Letters A 150, 262, l'integratore simplettico al 6° ordine della demo Orbite.
- M. Tao (2016), «Explicit symplectic approximation of nonseparable Hamiltonians», Physical Review E 94, 043303, il metodo della modalità Ultra (Yoshida-6 simplettico per il lensing).
- L. Flamm (1916), «Beiträge zur Einsteinschen Gravitationstheorie», Physikalische Zeitschrift 17, 448, il paraboloide.
- O. James, E. von Tunzelmann, P. Franklin & K. S. Thorne (2015), «Gravitational lensing by spinning black holes… Interstellar», Classical and Quantum Gravity 32, 065001.
- F. H. Vincent et al. (2011), «GYOTO: a new general relativistic ray-tracing code», Classical and Quantum Gravity 28, 225011.
- C. W. Misner, K. S. Thorne & J. A. Wheeler, «Gravitation» (1973); J. B. Hartle, «Gravity» (2003).
- Colore di corpo nero → sRGB: approssimazione del locus planckiano di N. Bartlett (dati di M. Charity).
- Cielo reale: NASA/Goddard SVS, «Deep Star Maps 2020», mappa equirettangolare di tutto il cielo da cataloghi Gaia/Tycho (dominio pubblico).
- Cielo reale (alternativo): ESO/S. Brunier, GigaGalaxy Zoom, panoramica di tutto il cielo (CC BY 4.0).
- M. Janssen et al. (2025), «Deep learning inference with the Event Horizon Telescope I–III», A&A 698, A60–A62: reti neurali bayesiane sui dati EHT. Per Sgr A* indicano uno spin quasi massimale (a ≈ 0,8–0,9, prograda) e un disco quasi frontale, con emissione dominata da elettroni caldi del disco più che da un getto, coerenti con i preset di Kerr che usiamo.
- M. Gorski & L. Murchikova (2026), «The Discovery of an Active Wind from the Milky Way's Central Black Hole», ApJL: prima evidenza (ALMA + Chandra) di un vento attivo da Sgr A*, una cavità conica ~1 pc svuotata dal gas freddo. Copertura INAF.
- NASA/Goddard Space Flight Center (2024), «New NASA Black Hole Visualization Takes Viewers Beyond the Brink»: per un buco nero da 4,3 milioni di M☉ (la massa di Sagittarius A*), orizzonte degli eventi di ~25 milioni di km (~17% della distanza Terra-Sole); una volta oltrepassato, la spaghettificazione arriva 12,8 secondi dopo, dopo aver percorso ~128.000 km verso la singolarità.
- INAF (2026), «Un buco nero vicino per capire il passato lontano»: SDSS J110546 ospita un buco nero di massa relativamente piccola ma in rapida crescita per accrescimento, con emissione radio persistente da oltre 8 anni e un getto relativistico di recente formazione — un esempio osservativo reale del fenomeno che il toggle «Getti» di questa simulazione rende in forma stilizzata.
- M. Toscani et al. (2025), «Updated predictions for gravitational wave emission from tidal disruption events…», A&A 703, A75: le onde gravitazionali dagli eventi di disruzione mareale, il fenomeno riprodotto nel playground.
- Stack: Three.js, React Three Fiber, @react-three/drei, @react-three/postprocessing, KaTeX. Esiste anche un renderer WebGPU nativo (shader WGSL, stessa fisica) alla pagina /lab/buco-nero/webgpu. Sviluppo: Fosforonero, Matteo Pizzi (Roma).
Questo laboratorio è gratuito, senza pubblicità e costruito con la fisica vera. Se ti è utile o vuoi sostenere nuovi strumenti scientifici interattivi, puoi offrirmi un caffè.
☕ Supporta su Ko-fi