Etant donné un plat (equarectangilar panoramique) de l'image par exemple 6000px x 3000px (étalement 360 degrés de large et 180 degré élevé). Comment puis-je traduire par exemple x = -10, y = -10 à coordonnées sphériques (panoramique/inclinaison verticale ou/déport horizontal) si le centre de l'image signifierait un décalage de 0 horizontal/vertical?Conversion de coordonnées x/y pour sphérique
Est-il possible de calculer, ou avez-vous besoin d'autres variables telles que le rayon, la distance ou de coordonnées z?
Edit: Ce que j'ai jusqu'à présent:
def self.translate_xy_to_spherical(x, y)
h = (x/(6000/360)) - 180
v = ((y/(3000/180)) - 90)/- 1
[h, v]
end
def self.translate_spherical_to_xy(h, v)
x = ((h + 180) * (6000/360))
y = ((v * -1) + 90) * (3000/ 180)
[x, y]
end
Si je mets en 0,0 dans la première méthode, je reçois -180,90 ce qui est correct. Mais si je mets 3000,0 je m'attendrais à 0,90 mais j'obtiens 7,90. Il en va de même avec l'autre formule (xy à sphérique). Quand je saisis 0,0 je m'attendrais à 3000,1500 mais j'obtiens 2880x1440px. Il y a un petit décalage, probablement parce que je calcule en ligne droite.
Mise à jour: La réponse
J'ai mis à jour la réponse ci-dessous pour prendre en compte que les diplômes pourraient être plus de 360 degrés. J'utilise le modulo pour résoudre ce problème:
IMAGE_WIDTH = 6000
IMAGE_HEIGHT = 3000
def self.translate_xy_to_spherical(x, y)
h = (x/(IMAGE_WIDTH/360.0)) - 180
v = ((y/(IMAGE_HEIGHT/180.0)) - 90)/-1
[h, v]
end
def self.translate_spherical_to_xy(h, v)
x = (((h % 360) + 180) * (IMAGE_WIDTH/360.0))
y = (((v % 180) * -1) + 90) * (IMAGE_HEIGHT/ 180.0)
[x, y]
end
Voulez-vous mapper une image plate à une sphère? –
Oui, une image plate équarectangilaire. https://en.wikipedia.org/wiki/Equirectangular_projection – Jareish
Pourquoi ne pouvez-vous utiliser les formules de wikipedia? –