Question

Je travaille avec une application de cartographie (WorldWind) et d'essayer de déterminer les latitudes minimales et maximales et longitudes qui sont actuellement affichés. J'ai accès au tronc de cône, mais je ne suis pas sûr de savoir comment tenir compte du fait que le monde peut avoir son cap et / ou pas changé. Toute aide sur ce problème serait apprécié.

merci,

Jeff

Était-ce utile?

La solution

En fait, la Frustum n'est pas la chose la plus utile dans ce contexte. Ce que vous devez faire est de transformer le projet inverse MODELVIEW.

Si vous pouvez récupérer votre projection (cône tronqué) et matrices modèle-vue, vous pouvez les inverser. Si vous projetez un rayon de votre position de la caméra le long espace de projection , vous pouvez utiliser ces inversions pour trouver ce rayon dans espace mondial . De là, vous pouvez recouper ce rayon avec votre monde pour trouver le point exact où ce rayon frappe le monde.

Pour ce faire, les quatre coins de l'écran, puis calculer votre zone de délimitation 2D basée sur les coordonnées intersection.

Autres conseils

Qu'est-ce que vous essayez de calculer exactement? points d'angle de la fenêtre ou celle de votre globe. Rappelez-vous un cercle coins ne sont pas (ni ne une sphère). Avez-vous vu l'outil dans minicarte worldwind (WorldMapLayer). Elle montre l'étendue actuellement visible en surimpression dans la minicarte, cela peut vous donner une idée de travailler ce qui est affiché exactement.

Bon à voir les questions de WorldWind qui coule partout. Nous ne devons pas faire un assez bon travail dans les forums.

Les cas de coin (1) de ma proposition précédente font l'algorithme difficile pour vous (je ne l'ai jamais dû effectuer un zoom arrière du globe et ne comprends toujours pas pourquoi vous ne toujours pas seulement d'utiliser l'hémisphère dans ce cas), alors voici une autre méthode qui peut fonctionner.

Prenez votre tronc de cône de projection comme un objet 3D et recouper avec le monde (comme un objet 3D). Il existe des algorithmes de CSG de variétés qui peuvent vous donner union, intersection et différence. Utilisez intersection. Cela se traduira par un maillage 3D des morceaux du globe qui se croisent avec le tronc de cône. L'étendue de ce maillage est l'étendue de la zone de délimitation. (Projet le long du grand axe du tronc de cône.)

Ceci est horriblement moins efficace que ma proposition précédente. : -)

(1) entièrement Pun prévue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top