I Monte-Carlo pathtracing har man brug for punkter som er uniformt fordelte på enhedskuglen S2.
Jeg har kode som finder perfekt uniformt fordelte punkter i [0,1]×[0,1] og har nu fundet en uniform mapning derfra til S2.
Den beror på, at hver af de tre koordinater for uniformt fordelte punkter på S2 faktisk er uniformt fordelte på [0,1]. De tre koordinater er selvfølgelig ikke uafhængige.
Man kan derfor vælge een akse (her z-aksen) og finde en uniformt fordelt værdi på den akse. Dermed skal de resterende to koordinater findes på en cirkel parallelt til XY-planet med almindeligt trigonometri.
Lad (s,t) tilhøre [0,1]×[0,1]. Fastlæg z med det samme som 2s-1. Lad radius r = sqrt(1-z2). Lad placeringen på cirklen være φ = 2 t π. Så kan (x,y,z) udtrykkes som (r cos φ, r sin φ, z).
Sådan ser det ud i Scheme:
Nedenstående viser omkr. 1000 Poisson-disk fordelte punkter mappet til en kugle.
Bemærk især, hvordan punkterne ikke klumper sammen omkring z-aksen.