Ho bisogno di un chiarimento con l'algoritmo che genera valori casuali per il mio ray-tracer domestico.
Emetto raggi da un punto. E ho il problema con la distribuzione di questi raggi: ho bisogno della distribuzione per essere uniforme, ma non è ...Distribuzione uniforme casuale (Monte-Carlo) su sfera unitaria
Il problema che affronto ora è che la distribuzione essendo uniforme inizialmente non è uniforme dopo le mie distorsioni di lo spazio dei risultati.
Quindi, ad esempio, genero angoli r e t se il sistema di coordinate polari. La distribuzione non è uniforme e non può essere uniforme: lo spazio vicino a ciascun polo ha una densità di risultati molto maggiore rispetto, ad esempio, vicino all'equatore. Il motivo è abbastanza chiaro: converto punti distribuiti uniformemente da spazio cilindrico a sferico. E distorto i risultati. Lo stesso problema è se normalizzo i punti generati casualmente nel cubo.
La mia idea ora è questa: voglio creare un tetraedro, normalizzare i suoi vertici, dividere ogni faccia (triangolo) con il punto nel mezzo, normalizzarlo e ripetere ricorsivamente finché non ho abbastanza punti. Poi "distorto" questi punti un po '. Poi li normalizzo di nuovo. Questo è tutto.
Comprendo che questo metodo non è un metodo matematico Monte-Carlo, perché non uso la distribuzione casuale in alcun passaggio tranne che per l'ultimo. E non mi piace questa soluzione per questa complessità.
Qualcuno può suggerire qualcosa di più semplice, ma ancora
- casuale
- uniforme
- veloce
- semplice
Grazie!
EDIT:
ho bisogno di un metodo veloce, non solo quella corretta. Ecco perché sto chiedendo di Monte-Carlo. Le risposte fornite sono corrette, ma non veloci. Il metodo con tetraedro è veloce, ma non molto "casuale" => errato.
Ho davvero bisogno di qualcosa di più adatto.
Hai ragione, non è proprio la risposta, ma è comunque una lettura piuttosto interessante. – avp