diff --git a/celestia.vcproj b/celestia.vcproj index 06faf1f26..7db9aa5b1 100644 --- a/celestia.vcproj +++ b/celestia.vcproj @@ -430,14 +430,6 @@ RelativePath=".\src\celengine\constellation.cpp" > - - - - @@ -494,10 +486,6 @@ RelativePath=".\src\celengine\image.cpp" > - - @@ -534,10 +522,6 @@ RelativePath=".\src\celengine\nebula.cpp" > - - @@ -546,10 +530,6 @@ RelativePath=".\src\celengine\opencluster.cpp" > - - @@ -566,10 +546,6 @@ RelativePath=".\src\celengine\planetgrid.cpp" > - - @@ -586,34 +562,10 @@ RelativePath=".\src\celengine\renderglsl.cpp" > - - - - - - - - - - - - @@ -638,18 +590,6 @@ RelativePath=".\src\celengine\spheremesh.cpp" > - - - - - - @@ -726,10 +666,6 @@ RelativePath=".\src\celengine\visibleregion.cpp" > - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include class ReferenceFrame; class Body; diff --git a/src/celengine/parseobject.cpp b/src/celengine/parseobject.cpp index cc28ea2bf..b86028648 100644 --- a/src/celengine/parseobject.cpp +++ b/src/celengine/parseobject.cpp @@ -10,21 +10,21 @@ // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. -#include -#include #include "parseobject.h" -#include "customorbit.h" -#include "customrotation.h" -#include "spiceorbit.h" -#include "spicerotation.h" -#include "scriptorbit.h" -#include "scriptrotation.h" #include "frame.h" #include "trajmanager.h" #include "rotationmanager.h" #include "universe.h" #include "eigenport.h" +#include +#include +#include +#include +#include +#include #include +#include +#include using namespace Eigen; using namespace std; diff --git a/src/celengine/rotationmanager.cpp b/src/celengine/rotationmanager.cpp index 903e06b90..eb21d919d 100644 --- a/src/celengine/rotationmanager.cpp +++ b/src/celengine/rotationmanager.cpp @@ -7,14 +7,13 @@ // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. +#include "rotationmanager.h" +#include "celestia.h" +#include +#include #include #include -#include "celestia.h" -#include -#include "samporient.h" -#include "rotationmanager.h" - using namespace std; diff --git a/src/celengine/rotationmanager.h b/src/celengine/rotationmanager.h index cd57562ee..e2123e934 100644 --- a/src/celengine/rotationmanager.h +++ b/src/celengine/rotationmanager.h @@ -10,10 +10,10 @@ #ifndef CELENGINE_ROTATIONMANAGER_H_ #define CELENGINE_ROTATIONMANAGER_H_ +#include +#include #include #include -#include -#include class RotationModelInfo : public ResourceInfo diff --git a/src/celengine/star.cpp b/src/celengine/star.cpp index db3aaa468..7cac90af6 100644 --- a/src/celengine/star.cpp +++ b/src/celengine/star.cpp @@ -13,9 +13,9 @@ #include #include "celestia.h" #include "astro.h" -#include "orbit.h" #include "star.h" #include "texmanager.h" +#include "celephem/orbit.h" using namespace Eigen; using namespace std; diff --git a/src/celengine/star.h b/src/celengine/star.h index 50dc50dcd..eb827c0a6 100644 --- a/src/celengine/star.h +++ b/src/celengine/star.h @@ -17,8 +17,8 @@ #include #include #include -#include #include +#include #include #include diff --git a/src/celengine/timelinephase.cpp b/src/celengine/timelinephase.cpp index 070b1cca0..9e4ddcf42 100644 --- a/src/celengine/timelinephase.cpp +++ b/src/celengine/timelinephase.cpp @@ -10,13 +10,13 @@ // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. -#include #include "celengine/timelinephase.h" #include "celengine/frame.h" -#include "celengine/orbit.h" -#include "celengine/rotation.h" #include "celengine/universe.h" #include "celengine/frametree.h" +#include "celephem/orbit.h" +#include "celephem/rotation.h" +#include TimelinePhase::TimelinePhase(Body* _body, diff --git a/src/celengine/trajmanager.cpp b/src/celengine/trajmanager.cpp index 21c950101..cee7f8e82 100644 --- a/src/celengine/trajmanager.cpp +++ b/src/celengine/trajmanager.cpp @@ -7,16 +7,15 @@ // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. +#include "celestia.h" +#include "trajmanager.h" +#include +#include +#include #include #include #include -#include "celestia.h" -#include -#include -#include "samporbit.h" -#include "trajmanager.h" - using namespace std; diff --git a/src/celengine/trajmanager.h b/src/celengine/trajmanager.h index 31cf13f04..c2891ffd1 100644 --- a/src/celengine/trajmanager.h +++ b/src/celengine/trajmanager.h @@ -10,11 +10,11 @@ #ifndef CELENGINE_TRAJMANAGER_H_ #define CELENGINE_TRAJMANAGER_H_ +#include +#include #include #include #include -#include -#include class TrajectoryInfo : public ResourceInfo diff --git a/src/celengine/vecgl.h b/src/celengine/vecgl.h index 1f8ac16b7..fbfc8d7f2 100644 --- a/src/celengine/vecgl.h +++ b/src/celengine/vecgl.h @@ -90,6 +90,7 @@ inline void glScale(const Vec3f& v) glScalef(v.x, v.y, v.z); } +#if 0 inline void glLightDirection(GLenum light, const Vec3f& dir) { glLightfv(light, GL_POSITION, &(Vec4f(dir.x, dir.y, dir.z, 0.0f).x)); @@ -109,18 +110,18 @@ inline void glLightColor(GLenum light, GLenum which, const Vec4f& color) { glLightfv(light, which, &color.x); } +#endif inline void glLightColor(GLenum light, GLenum which, const Color& color) { - glLightfv(light, which, - &(Vec4f(color.red(), color.green(), color.blue(), color.alpha()).x)); + Eigen::Vector4f v(color.red(), color.green(), color.blue(), color.alpha()); + glLightfv(light, which, v.data()); } inline void glAmbientLightColor(const Color& color) { - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, - &(Vec4f(color.red(), color.green(), color.blue(), - color.alpha()).x)); + Eigen::Vector4f v(color.red(), color.green(), color.blue(), color.alpha()); + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, v.data()); } diff --git a/src/celengine/customorbit.cpp b/src/celephem/customorbit.cpp similarity index 99% rename from src/celengine/customorbit.cpp rename to src/celephem/customorbit.cpp index 1c6638ae0..295da1b68 100644 --- a/src/celengine/customorbit.cpp +++ b/src/celephem/customorbit.cpp @@ -7,16 +7,16 @@ // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. +#include "customorbit.h" +#include "vsop87.h" +#include "jpleph.h" +#include +#include +#include #include #include #include #include -#include -#include -#include "astro.h" -#include "customorbit.h" -#include "vsop87.h" -#include "jpleph.h" using namespace Eigen; using namespace std; diff --git a/src/celengine/customorbit.h b/src/celephem/customorbit.h similarity index 94% rename from src/celengine/customorbit.h rename to src/celephem/customorbit.h index 35dfea6c3..bced51cd7 100644 --- a/src/celengine/customorbit.h +++ b/src/celephem/customorbit.h @@ -10,8 +10,8 @@ #ifndef _CUSTOMORBIT_H_ #define _CUSTOMORBIT_H_ +#include "orbit.h" #include -#include Orbit* GetCustomOrbit(const std::string& name); diff --git a/src/celengine/customrotation.cpp b/src/celephem/customrotation.cpp similarity index 99% rename from src/celengine/customrotation.cpp rename to src/celephem/customrotation.cpp index f586ef93b..881956609 100644 --- a/src/celengine/customrotation.cpp +++ b/src/celephem/customrotation.cpp @@ -2,7 +2,7 @@ // // Custom rotation models for Solar System bodies. // -// Copyright (C) 2008, the Celestia Development Team +// Copyright (C) 2008-2009, the Celestia Development Team // Initial version by Chris Laurel, claurel@gmail.com // // This program is free software; you can redistribute it and/or @@ -10,13 +10,13 @@ // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. +#include "customrotation.h" +#include "rotation.h" +#include "precession.h" +#include +#include #include #include -#include -#include -#include -#include -#include using namespace Eigen; using namespace std; diff --git a/src/celengine/customrotation.h b/src/celephem/customrotation.h similarity index 100% rename from src/celengine/customrotation.h rename to src/celephem/customrotation.h diff --git a/src/celengine/jpleph.cpp b/src/celephem/jpleph.cpp similarity index 100% rename from src/celengine/jpleph.cpp rename to src/celephem/jpleph.cpp diff --git a/src/celengine/jpleph.h b/src/celephem/jpleph.h similarity index 100% rename from src/celengine/jpleph.h rename to src/celephem/jpleph.h diff --git a/src/celengine/nutation.cpp b/src/celephem/nutation.cpp similarity index 100% rename from src/celengine/nutation.cpp rename to src/celephem/nutation.cpp diff --git a/src/celengine/nutation.h b/src/celephem/nutation.h similarity index 100% rename from src/celengine/nutation.h rename to src/celephem/nutation.h diff --git a/src/celengine/orbit.cpp b/src/celephem/orbit.cpp similarity index 92% rename from src/celengine/orbit.cpp rename to src/celephem/orbit.cpp index 39e3bd98a..ac18bc3f0 100644 --- a/src/celengine/orbit.cpp +++ b/src/celephem/orbit.cpp @@ -1,22 +1,22 @@ // orbit.cpp // -// Copyright (C) 2001, Chris Laurel +// Copyright (C) 2001-2009, the Celestia Development Team +// Original version by Chris Laurel // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. +#include "orbit.h" +#include +#include +#include +#include #include #include #include #include -#include -#include -#include -#include "astro.h" -#include "orbit.h" -#include "body.h" using namespace Eigen; using namespace std; @@ -220,16 +220,15 @@ Vector3d EllipticalOrbit::velocityAtE(double E) const if (eccentricity < 1.0) { double a = pericenterDistance / (1.0 - eccentricity); + double b = a * sqrt(1 - square(eccentricity)); double sinE = sin(E); double cosE = cos(E); - x = -a * sinE; - y = a * sqrt(1 - square(eccentricity)) * cosE; - double meanMotion = 2.0 * PI / period; double edot = meanMotion / (1 - eccentricity * cosE); - x *= edot; - y *= edot; + + x = -a * sinE * edot; + y = b * cosE * edot; } else if (eccentricity > 1.0) { @@ -287,14 +286,36 @@ double EllipticalOrbit::getBoundingRadius() const } -void EllipticalOrbit::sample(double, double t, int nSamples, +void EllipticalOrbit::sample(double startTime, double duration, int nSamples, OrbitSampleProc& proc) const { - if (eccentricity >= 1.0) +#if 0 + { + // Sample uniformly in time + for (int i = 0; i < nSamples; i++) + { + double tsamp = startTime + duration / nSamples; + proc.sample(tsamp, positionAtTime(tsamp), velocityAtTime(tsamp)); + } + } +#endif + if (eccentricity >= 1.0 || 1) { - double dE = 1 * PI / (double) nSamples; + // Sample uniformly in eccentric anomaly + double t = startTime - epoch; + double meanMotion = 2.0 * PI / period; + double M0 = meanAnomalyAtEpoch + t * meanMotion; + double E0 = eccentricAnomaly(M0); + double dE = 2 * PI / (double) nSamples; + for (int i = 0; i < nSamples; i++) - proc.sample(t, positionAtE(dE * i), velocityAtE(dE * i)); + { + // Compute the time tag for this sample + double E = E0 + dE * i; + double M = E - eccentricity * sin(E); // Mean anomaly from ecc anomaly + double tsamp = startTime + (M - M0) * period / (2 * PI); // Time from mean anomaly + proc.sample(tsamp, positionAtE(E), velocityAtE(E)); + } } else { @@ -311,7 +332,7 @@ void EllipticalOrbit::sample(double, double t, int nSamples, { // Compute the time tag for this sample double M = E - eccentricity * sin(E); // Mean anomaly from ecc anomaly - double tsamp = t + (M - M0) * period / (2 * PI); // Time from mean anomaly + double tsamp = startTime + (M - M0) * period / (2 * PI); // Time from mean anomaly proc.sample(tsamp, positionAtE(E), velocityAtE(E)); diff --git a/src/celengine/orbit.h b/src/celephem/orbit.h similarity index 100% rename from src/celengine/orbit.h rename to src/celephem/orbit.h diff --git a/src/celengine/precession.cpp b/src/celephem/precession.cpp similarity index 100% rename from src/celengine/precession.cpp rename to src/celephem/precession.cpp diff --git a/src/celengine/precession.h b/src/celephem/precession.h similarity index 100% rename from src/celengine/precession.h rename to src/celephem/precession.h diff --git a/src/celengine/rotation.cpp b/src/celephem/rotation.cpp similarity index 99% rename from src/celengine/rotation.cpp rename to src/celephem/rotation.cpp index 9db0f80d0..9c9fb5e16 100644 --- a/src/celengine/rotation.cpp +++ b/src/celephem/rotation.cpp @@ -13,6 +13,7 @@ #include "rotation.h" #include +#include #include using namespace Eigen; diff --git a/src/celengine/rotation.h b/src/celephem/rotation.h similarity index 99% rename from src/celengine/rotation.h rename to src/celephem/rotation.h index 4fae54033..b66907b37 100644 --- a/src/celengine/rotation.h +++ b/src/celephem/rotation.h @@ -11,7 +11,6 @@ #ifndef _CELENGINE_ROTATION_H_ #define _CELENGINE_ROTATION_H_ -#include #include diff --git a/src/celengine/samporbit.cpp b/src/celephem/samporbit.cpp similarity index 99% rename from src/celengine/samporbit.cpp rename to src/celephem/samporbit.cpp index fe15942f1..c814a7099 100644 --- a/src/celengine/samporbit.cpp +++ b/src/celephem/samporbit.cpp @@ -1,6 +1,6 @@ // samporbit.cpp // -// Copyright (C) 2002-2008, Celestia Development Team +// Copyright (C) 2002-2009, Celestia Development Team // Original version by Chris Laurel // // Trajectories based on unevenly spaced cartesian positions. @@ -10,6 +10,10 @@ // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. +#include "orbit.h" +#include "samporbit.h" +#include +#include #include #include #include @@ -17,10 +21,6 @@ #include #include #include -#include -#include -#include -#include using namespace Eigen; using namespace std; diff --git a/src/celengine/samporbit.h b/src/celephem/samporbit.h similarity index 97% rename from src/celengine/samporbit.h rename to src/celephem/samporbit.h index f157125e9..0c6b914fe 100644 --- a/src/celengine/samporbit.h +++ b/src/celephem/samporbit.h @@ -10,8 +10,8 @@ #ifndef _CELENGINE_SAMPORBIT_H_ #define _CELENGINE_SAMPORBIT_H_ +#include "orbit.h" #include -#include enum TrajectoryInterpolation { diff --git a/src/celengine/samporient.cpp b/src/celephem/samporient.cpp similarity index 99% rename from src/celengine/samporient.cpp rename to src/celephem/samporient.cpp index 56e2823df..1cc5f13c2 100644 --- a/src/celengine/samporient.cpp +++ b/src/celephem/samporient.cpp @@ -11,8 +11,8 @@ // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. +#include "samporient.h" #include -#include #include #include #include diff --git a/src/celengine/samporient.h b/src/celephem/samporient.h similarity index 94% rename from src/celengine/samporient.h rename to src/celephem/samporient.h index bd9517cf7..b8d472855 100644 --- a/src/celengine/samporient.h +++ b/src/celephem/samporient.h @@ -10,8 +10,8 @@ #ifndef _CELENGINE_SAMPORIENT_H_ #define _CELENGINE_SAMPORIENT_H_ +#include "rotation.h" #include -#include extern RotationModel* LoadSampledOrientation(const std::string& name); diff --git a/src/celengine/scriptobject.cpp b/src/celephem/scriptobject.cpp similarity index 100% rename from src/celengine/scriptobject.cpp rename to src/celephem/scriptobject.cpp diff --git a/src/celengine/scriptobject.h b/src/celephem/scriptobject.h similarity index 100% rename from src/celengine/scriptobject.h rename to src/celephem/scriptobject.h diff --git a/src/celengine/scriptorbit.cpp b/src/celephem/scriptorbit.cpp similarity index 100% rename from src/celengine/scriptorbit.cpp rename to src/celephem/scriptorbit.cpp diff --git a/src/celengine/scriptorbit.h b/src/celephem/scriptorbit.h similarity index 97% rename from src/celengine/scriptorbit.h rename to src/celephem/scriptorbit.h index ead4fa8f3..c76e0b072 100644 --- a/src/celengine/scriptorbit.h +++ b/src/celephem/scriptorbit.h @@ -13,7 +13,7 @@ #define _CELENGINE_SCRIPTORBIT_H_ #include -#include +#include "orbit.h" struct lua_State; diff --git a/src/celengine/scriptrotation.cpp b/src/celephem/scriptrotation.cpp similarity index 100% rename from src/celengine/scriptrotation.cpp rename to src/celephem/scriptrotation.cpp diff --git a/src/celengine/scriptrotation.h b/src/celephem/scriptrotation.h similarity index 97% rename from src/celengine/scriptrotation.h rename to src/celephem/scriptrotation.h index 80d3429b8..689366d3d 100644 --- a/src/celengine/scriptrotation.h +++ b/src/celephem/scriptrotation.h @@ -13,7 +13,7 @@ #define _CELENGINE_SCRIPTROTATION_H_ #include -#include +#include "rotation.h" struct lua_State; diff --git a/src/celengine/spiceinterface.cpp b/src/celephem/spiceinterface.cpp similarity index 100% rename from src/celengine/spiceinterface.cpp rename to src/celephem/spiceinterface.cpp diff --git a/src/celengine/spiceinterface.h b/src/celephem/spiceinterface.h similarity index 100% rename from src/celengine/spiceinterface.h rename to src/celephem/spiceinterface.h diff --git a/src/celengine/spiceorbit.cpp b/src/celephem/spiceorbit.cpp similarity index 99% rename from src/celengine/spiceorbit.cpp rename to src/celephem/spiceorbit.cpp index 1fe52256f..6fe5950ee 100644 --- a/src/celengine/spiceorbit.cpp +++ b/src/celephem/spiceorbit.cpp @@ -12,7 +12,7 @@ #include #include #include "SpiceUsr.h" -#include "astro.h" +#include #include "spiceorbit.h" #include "spiceinterface.h" diff --git a/src/celengine/spiceorbit.h b/src/celephem/spiceorbit.h similarity index 98% rename from src/celengine/spiceorbit.h rename to src/celephem/spiceorbit.h index 06b4b8f36..2e88ce090 100644 --- a/src/celengine/spiceorbit.h +++ b/src/celephem/spiceorbit.h @@ -12,9 +12,10 @@ #ifndef _CELENGINE_SPICEORBIT_H_ #define _CELENGINE_SPICEORBIT_H_ +#include "orbit.h" #include #include -#include + class SpiceOrbit : public CachingOrbit { diff --git a/src/celengine/spicerotation.cpp b/src/celephem/spicerotation.cpp similarity index 99% rename from src/celengine/spicerotation.cpp rename to src/celephem/spicerotation.cpp index 082b7266e..1977bc08a 100644 --- a/src/celengine/spicerotation.cpp +++ b/src/celephem/spicerotation.cpp @@ -10,14 +10,14 @@ // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. +#include "spicerotation.h" +#include "spiceinterface.h" +#include +#include +#include "SpiceUsr.h" #include #include #include -#include "SpiceUsr.h" -#include "astro.h" -#include "spicerotation.h" -#include "spiceinterface.h" -#include using namespace Eigen; using namespace std; diff --git a/src/celengine/spicerotation.h b/src/celephem/spicerotation.h similarity index 98% rename from src/celengine/spicerotation.h rename to src/celephem/spicerotation.h index 84d03117c..53d3aee49 100644 --- a/src/celengine/spicerotation.h +++ b/src/celephem/spicerotation.h @@ -13,10 +13,10 @@ #ifndef _CELENGINE_SPICEROTATION_H_ #define _CELENGINE_SPICEROTATION_H_ +#include "rotation.h" +#include #include #include -#include -#include class SpiceRotation : public CachingRotationModel { diff --git a/src/celengine/vsop87.cpp b/src/celephem/vsop87.cpp similarity index 99% rename from src/celengine/vsop87.cpp rename to src/celephem/vsop87.cpp index 7f80a1d29..638439a2d 100644 --- a/src/celengine/vsop87.cpp +++ b/src/celephem/vsop87.cpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include "vsop87.h" using namespace Eigen; using namespace std; diff --git a/src/celengine/vsop87.h b/src/celephem/vsop87.h similarity index 94% rename from src/celengine/vsop87.h rename to src/celephem/vsop87.h index f3e752021..8b59969be 100644 --- a/src/celengine/vsop87.h +++ b/src/celephem/vsop87.h @@ -11,7 +11,7 @@ #define _CELENGINE_VSOP87_H_ #include -#include +#include "orbit.h" extern Orbit* CreateVSOP87Orbit(const std::string& name); diff --git a/src/celestia/celestiacore.cpp b/src/celestia/celestiacore.cpp index 5d83a4b9a..cf4e022d2 100644 --- a/src/celestia/celestiacore.cpp +++ b/src/celestia/celestiacore.cpp @@ -36,7 +36,7 @@ #include #include #include -#include +#include #include #include #include @@ -49,7 +49,7 @@ #include #ifdef CELX -#include +#include #endif #ifdef _WIN32