Zastanawiam się, czy tekstura do mojej sfery nie jest w jakiś sposób poprawnie zastosowana i czy mogę ją jakoś skompensować? Próbuję umieścić pudełko w Sydney w Australii, dostarczając lat/lon i konwertując do kartezjańskich współrzędnych xyz. Jednak pudełko nie jest miejscami we właściwej lokalizacji. Domyślam się, że oryginalny obraz jest mapą Mercatora, gdy jest on stosowany do sfery punkt środkowy lat/lon jest nieprawidłowy.Tekstura na kuli nie jest wyrównana poprawnie? Lat/Lon -> Kartezjański xyz
Poniższy kod jest minimalnym przykładem ponownego przetworzenia.
- Załaduję obraz ziemi i stosuję go do sfery (promień = 400).
- Dostarczam następnie szerokość/długość geograficzną dla Sydney, Australia (33.8688, -151.2093) i konwertuję na radiany.
- Konwersja lat/lon na xes kartezjański (pobrana z: https://stackoverflow.com/a/1185413/3723165)
- Tłumaczenie i pchanie pudełka do tej lokalizacji.
Oto gdzie to pole jest umieszczony:
Re-wytwarzanym kod
var img;
var theta = 0;
var r = 400;
function preload() {
img = loadImage('https://eoimages.gsfc.nasa.gov/images/imagerecords/79000/79765/dnb_land_ocean_ice.2012.3600x1800.jpg');
}
function setup() {
createCanvas(1600, 1200, WEBGL);
}
function draw() {
background(0);
rotateY(theta);
theta += 0.01;
texture(img);
sphere(r);
//Sydney, Australia Latitude/Longtidue
var lat = radians(33.8688);
var lon = radians(151.2093);
//cartesian coordinates
var x = r * Math.cos(lat) * Math.cos(lon);
var y = r * Math.cos(lat) * Math.sin(lon);
var z = r * Math.sin(lat);
push();
translate(x, y, z);
fill(255);
box(100, 10, 10);
pop();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.16/p5.js"></script>
Ok, pomyślałem częściowo, co się stało. Jeśli wykreślę szerokość geograficzną 0, długość geograficzna 0 pokazuje między Indiami i Tajlandią, co jest nieprawidłowe. Szerokość geograficzna 0, długość geograficzna 0 powinna wykreślać tylko na zachodnim wybrzeżu Afryki. Jak mogę to poprawić? Myślę, że jest to błąd p5.js podczas stosowania tekstury do kuli. Ponieważ jeśli użyję dokładnie tego samego kodu w przetwarzaniu, to działka będzie poprawnie u wybrzeży Afryki. –