Bolygómozgás példaprogram

Megoldandó feladat

Elrejtés

Elvárások

  • Egy központi csillag körül ellipszispályán mozgó bolygót modellezzünk.
  • A csillag az ellipszispálya fókuszpontjában helyezkedjen el.
  • A bolygó folyamatos mozgást végezzen a pályáján. A gömb alakja ne torzuljon!

Az előző feladatokhoz képest újdonság, hogy bizonyos transzformáció paramétereket képlettel határozunk meg.

További segédanyag

Színtér gráf felépítése

Elrejtés

Az axesHelper, a solarSystemGroup, és a sunMesh nem végeznek mozgást, a létrehozási helyükön maradnak.

earthOrbitMesh:

  • A pályát reprezentáló kör objektumot ellipszissé kell alakítani a panel beállításnak megfelelően skálázással.
  • Az ellipszist be kell forgatni az XZ síkba 90 fokkal.
  • Ki kell számolni a tengelyarányok alapján a fókuszpont távolságát és ezzel eltolni az ellipszist a Z-tengely mentén.
    • A segédanyagban található képlettel megkapjuk (Pithagorász tétellel az ellipszis kis- és nagytengely sugarából).
// http://www.bethlen.hu/matek/mathist/forras/Ellipszis_definicioja.htm
// Ellipszis fókuszpont távolság számítása a középponttól Pithagorász-tétellel
earthOrbitFocalDistance = Math.sqrt(
earthOrbitRadius * earthOrbitRadius
- earthOrbitRadius * earthOrbitRadius * ctrl.earthOrbitRatio * ctrl.earthOrbitRatio
) / 2.0
;

earthOrbitMesh.position.z = earthOrbitFocalDistance;

earthMesh:

  • A panelen megadott szögnövekménnyel tovább kell mozgatni a bolygót. Az aktuális helyzetet egy globális változóban (earthOrbitAngle) tároljuk.
  • A helyzet, a sugár és a lapítási arány ismeretében, trigonometrikus függvényekkel kiszámoljuk a gömb pozícióját.
// Bolygó mozgatás és új pozíciójának számítása
earthOrbitAngle -= ctrl.earthOrbitSpeed;

var radians = earthOrbitAngle * Math.PI / 180;
earthMesh.position.x = Math.cos( radians ) * earthOrbitRadius * ctrl.earthOrbitRatio;
earthMesh.position.z = Math.sin( radians ) * earthOrbitRadius + earthOrbitFocalDistance;

Felmerülhet a kérdés, hogy miért nem az ellipszisnél is látott skálázással, objektum hierarchiával oldjuk meg a dolgot? Ezzel a probléma az, hogy a skálázás lapító hatása nem csak a pályára, hanem a gömb alakjára is hatással van, ami nem elfogadható.