Früh aufstehen hat auch gute Seiten: Die Erdabplattung wird jetzt in meiner 3D-Darstellung berücksichtigt.
Die Erdabplattung bezeichnet die Abplattung des Planeten Erde und entsteht durch die Fliehkraft der Erdrotation, welche am Ãquator am gröÃten und an den Polen Null ist. Da das Erdinnere etwas plastisch ist, gibt unser Planet (wie auch andere im Sonnensystem) dieser Kraft groÃteils nach. Dadurch nimmt der Meeresspiegel genähert die Form eines Rotationsellipsoids an, dessen Halbachsen (Radien) sich um 21,38 km unterscheiden (a = 6378,137 km, bzw. b = 6356,752 km). Die Erdabplattung beträgt somit f = (a – b) / a = 1:298,3.
In Java3D kann man das ganze durch eine einfache Transformation erreichen:
Sphere sphere = new Sphere(radius, Sphere.GENERATE_TEXTURE_COORDS, 80, app); // rotation deform float EARTH_RATIO = 1f / 298.3f; Matrix3f earthDeform = new Matrix3f(1f + EARTH_RATIO, 0.0f, 0.0f, 0.0f, 1f, 0.0f, 0.0f, 0.0f, 1f + EARTH_RATIO); Transform3D trans = new Transform3D(earthDeform, new Vector3f(), 1.0f); TransformGroup earth = new TransformGroup(trans); earth.addChild(sphere);
Die Variable EARTH_RATIO muss für ein sichtbares Ergebnis natürlich etwas gröÃer ausfallen als 1 : 298.3. Ich habe mit 1 : 8 eine gut sichtbare Abplattung erzeugt. Damit ist natürlich noch kein Rotationskörper erstellt, allerdings reicht diese einfache Transformation für Darstellungszwecke aus.
Für die Berechnung der Entfernung zwischen zwei Position auf der Erde werde ich die Oberfläche auch durch eine Kugel annähern, die Darstellung einer Strecke auf meiner Erde würde allerdings durch die zugrunde liegende Deformation auch auf der Ellipse dargestellt. Eine berechnete gerade Strecke von Punkt A nach B, wird also etwas verzerrt dargestellt werden.
Gut, so weit ist es noch lange nicht. Im Moment sitze ich formelmäÃig auf dem Trocknen und die Wikipedia gibt leider in Bezug auf Formeln und “harte” Fakten nicht immer genug Material her… Hier erstmal ein kleiner Screenshot von jetzigen Stand:


