2016-09-22 1 views
0

Ich habe einige openSceneGraph Beispiele von OSG geübt. Eines der Beispiele, ich stieß auf Text auf dem Ellipsoid.Ellipsoid zu Sphere in OSG

osgText::Text* createText(osg::EllipsoidModel* ellipsoid, double latitude, double longitude, double height, const std::string& str) 
{ 
    double X, Y, Z; 
    ellipsoid->convertLatLongHeightToXYZ(osg::DegreesToRadians(latitude), osg::DegreesToRadians(longitude), height, X, Y, Z); 

Das funktioniert gut in meinem Fall. Dann dachte ich, das gleiche mit der Kugel zu tun. In diesem Beispiel wird das Ellipsoid basierend auf dem Lat, der Länge und der Höhe gezeichnet. Ich möchte die Kugel mit einem Radius zeichnen, der von der Fenstergröße/Bildschirmgröße abhängt. Leider konnte ich nicht sehen, was die Bildschirmkoordinaten in der osg :: Sphere-Klasse in Kugelgröße konvertiert.

Einige können mir helfen, dies zu lösen. Es könnte etwas geben, was dies konvertiert, vielleicht bin ich wegen meiner geringeren Erfahrung nicht gekommen.

Prost, Inna.

Antwort

0

osg :: Sphere ist kein Geodatenmodell wie osg :: EllipsoidModel.

Erstellen Sie einfach ein osg :: EllipsoidModel mit den beiden Radien (Äquator und Polar), die dem gewünschten Kugelradius entsprechen, und verwenden Sie osg :: EllipsoidModel.

+0

Hallo Herr @ XenonofArcticus Ich habe versucht, wie Sie sagten. Aber ich bekomme das Ergebnis nicht als Sphäre. ** Doppel Breite = 360,0;“ 'double Länge = 360,0; // - 100' ** und dann habe ich es verwende für Ellipsoid-Modell ** 'geode-> addDrawable (Create (Ellipsoid, Breite, lgnt , 0, textList [t% textList.size()])); '** – Inna

+0

Fehle ich eine Übertragung? – Inna

+0

Latitude von 360 ist eine nicht-sinnliche Nummer. Zeigen Sie mir einige tatsächliche Code, wie Sie erstellen EllipsoidModel und damit. Auch das ist keine gute Frage für Stack Overflow. Ich schlage vor, dass wir es auf der Mailingliste osg-users fortsetzen, und Sie löschen diese Frage. – XenonofArcticus

Verwandte Themen