Comet.hpp   Comet.hpp 
skipping to change at line 43 skipping to change at line 43
2014-01: GZ: Parabolic tails appropriately scaled/rotated. Much is c urrently empirical, leaving room for physics-based improvements. 2014-01: GZ: Parabolic tails appropriately scaled/rotated. Much is c urrently empirical, leaving room for physics-based improvements.
2014-08: GZ: speedup in case hundreds of comets are loaded. 2014-08: GZ: speedup in case hundreds of comets are loaded.
2014-11: GZ: tail extinction, better brightness balance. 2014-11: GZ: tail extinction, better brightness balance.
2017-03: GZ: added fields to infoMap 2017-03: GZ: added fields to infoMap
*/ */
class Comet : public Planet class Comet : public Planet
{ {
public: public:
friend class SolarSystem; // Solar System initializes static constants. friend class SolarSystem; // Solar System initializes static constants.
Comet(const QString& englishName, Comet(const QString& englishName,
int flagLighting,
double radius, double radius,
double oblateness, double oblateness,
Vec3f halocolor, Vec3f halocolor,
float albedo, float albedo,
float roughness,
float outgas_intensity,
float outgas_falloff,
const QString& texMapName, const QString& texMapName,
const QString& objModelName,
posFuncType _coordFunc, posFuncType _coordFunc,
void* userDataPtr, void* orbitPtr,
OsculatingFunctType *osculatingFunc, OsculatingFunctType *osculatingFunc,
bool closeOrbit, bool closeOrbit,
bool hidden, bool hidden,
const QString &pTypeStr, const QString &pTypeStr,
float dustTailWidthFact=1.5f, float dustTailWidthFact=1.5f,
float dustTailLengthFact=0.4f, float dustTailLengthFact=0.4f,
float dustTailBrightnessFact=1.5f float dustTailBrightnessFact=1.5f
); );
virtual ~Comet(); virtual ~Comet();
skipping to change at line 97 skipping to change at line 100
//! Function overriden to handle the problem with name conflicts. //! Function overriden to handle the problem with name conflicts.
virtual void translateName(const StelTranslator& trans); virtual void translateName(const StelTranslator& trans);
virtual QString getEnglishName(void) const {return englishName;} virtual QString getEnglishName(void) const {return englishName;}
virtual QString getNameI18n(void) const {return nameI18;} virtual QString getNameI18n(void) const {return nameI18;}
//! \brief sets absolute magnitude and slope parameter. //! \brief sets absolute magnitude and slope parameter.
//! These are the parameters in the IAU's two-parameter magnitude sy stem //! These are the parameters in the IAU's two-parameter magnitude sy stem
//! for comets. They are used to calculate the apparent magnitude at //! for comets. They are used to calculate the apparent magnitude at
//! different distances from the Sun. They are not used in the same way //! different distances from the Sun. They are not used in the same way
//! as the same parameters in MinorPlanet. //! as the same parameters in MinorPlanet.
void setAbsoluteMagnitudeAndSlope(const double magnitude, const doub le slope); void setAbsoluteMagnitudeAndSlope(const float magnitude, const float slope);
//! set value for semi-major axis in AU //! set value for semi-major axis in AU
void setSemiMajorAxis(const double value); void setSemiMajorAxis(const double value);
//! get sidereal period for comet, days, or returns 0 if not possibl e (paraboloid, hyperboloid orbit) //! get sidereal period for comet, days, or returns 0 if not possibl e (paraboloid, hyperboloid orbit)
virtual double getSiderealPeriod() const; virtual double getSiderealPeriod() const;
//! re-implementation of Planet's draw() //! re-implementation of Planet's draw()
virtual void draw(StelCore* core, float maxMagLabels, const QFont& p lanetNameFont); virtual void draw(StelCore* core, float maxMagLabels, const QFont& p lanetNameFont);
skipping to change at line 134 skipping to change at line 137
//! To be more efficient, the arrays are only computed if they are e mpty. //! To be more efficient, the arrays are only computed if they are e mpty.
//! @param parameter the parameter p of the parabola. z=r²/2p (r²=x² +y²) //! @param parameter the parameter p of the parabola. z=r²/2p (r²=x² +y²)
//! @param lengthfactor The parabola will be lengthened. This shifts the visible focus, so it must be here. //! @param lengthfactor The parabola will be lengthened. This shifts the visible focus, so it must be here.
//! @param vertexArr vertex array, collects x0, y0, z0, x1, y1, z1, ... //! @param vertexArr vertex array, collects x0, y0, z0, x1, y1, z1, ...
//! @param texCoordArr texture coordinates u0, v0, u1, v1, ... //! @param texCoordArr texture coordinates u0, v0, u1, v1, ...
//! @param colorArr vertex colors (if not textured) r0, g0, b0, r1, g1, b1, ... //! @param colorArr vertex colors (if not textured) r0, g0, b0, r1, g1, b1, ...
//! @param indices into the former arrays (zero-starting), triplets forming triangles: t0,0, t0,1, t0,2, t1,0, t1,1, t1,2, ... //! @param indices into the former arrays (zero-starting), triplets forming triangles: t0,0, t0,1, t0,2, t1,0, t1,1, t1,2, ...
//! @param xOffset for the dust tail, this may introduce a bend. Uni ts are x per sqrt(z). //! @param xOffset for the dust tail, this may introduce a bend. Uni ts are x per sqrt(z).
void computeParabola(const float parameter, const float topradius, c onst float zshift, QVector<Vec3d>& vertexArr, QVector<float>& texCoordArr, QVector<unsigned short>& indices, const float xOffset=0.0f); void computeParabola(const float parameter, const float topradius, c onst float zshift, QVector<Vec3d>& vertexArr, QVector<float>& texCoordArr, QVector<unsigned short>& indices, const float xOffset=0.0f);
double absoluteMagnitude; float slopeParameter;
double slopeParameter;
double semiMajorAxis; double semiMajorAxis;
bool isCometFragment; bool isCometFragment;
bool nameIsProvisionalDesignation; bool nameIsProvisionalDesignation;
//GZ Tail additions //GZ Tail additions
Vec2f tailFactors; // result of latest call to getComaDiameterAndTai lLengthAU(); Results cached here for infostring. [0]=Coma diameter, [1] gas tail length. Vec2f tailFactors; // result of latest call to getComaDiameterAndTai lLengthAU(); Results cached here for infostring. [0]=Coma diameter, [1] gas tail length.
bool tailActive; //! true if there is a tail long eno ugh to be worth drawing. Drawing tails is quite costly. bool tailActive; //! true if there is a tail long eno ugh to be worth drawing. Drawing tails is quite costly.
bool tailBright; //! true if tail is bright enough to draw. bool tailBright; //! true if tail is bright enough to draw.
double deltaJDEtail; //! like deltaJDE, but time differen ce between tail geometry updates. double deltaJDEtail; //! like deltaJDE, but time differen ce between tail geometry updates.
double lastJDEtail; //! like lastJDE, but time of last t ail geometry update. double lastJDEtail; //! like lastJDE, but time of last t ail geometry update.
Mat4d gasTailRot; //! rotation matrix for gas tail par abola Mat4d gasTailRot; //! rotation matrix for gas tail par abola
Mat4d dustTailRot; //! rotation matrix for the skewed d ust tail parabola Mat4d dustTailRot; //! rotation matrix for the skewed d ust tail parabola
float dustTailWidthFactor; //!< empirical individual broadening of the dust tail end, compared to the gas tail end. Actually, dust tail wi dth=2*comaWidth*dustTailWidthFactor. Default 1.5 float dustTailWidthFactor; //!< empirical individual broadening of the dust tail end, compared to the gas tail end. Actually, dust tail wi dth=2*comaWidth*dustTailWidthFactor. Default 1.5
float dustTailLengthFactor; //!< empirical individual length of dust tail relative to gas tail. Taken from ssystem.ini, typical value 0.3.. 0.5, default 0.4 float dustTailLengthFactor; //!< empirical individual length of dust tail relative to gas tail. Taken from ssystem.ini, typical value 0.3.. 0.5, default 0.4
float dustTailBrightnessFactor; //!< empirical individual brightness of dust tail relative to gas tail. Taken from ssystem.ini, default 1.5 float dustTailBrightnessFactor; //!< empirical individual brightness of dust tail relative to gas tail. Taken from ssystem.ini, default 1.5
QVector<double> comaVertexArr; QVector<double> comaVertexArr;
QVector<float> comaTexCoordArr; // --> 2014-08: could also be decla red static, but it is filled by StelPainter... QVector<float> comaTexCoordArr; // --> 2014-08: could also be decla red static, but it is filled by StelPainter...
float intensityFovScale; // like for constellations: reduce brightne
ss when zooming in.
float intensityMinFov;
float intensityMaxFov;
// These are to avoid having index arrays for each comet when all ar e equal. // These are to avoid having index arrays for each comet when all ar e equal.
static bool createTailIndices; static bool createTailIndices;
static bool createTailTextureCoords; static bool createTailTextureCoords;
QVector<Vec3d> gastailVertexArr; // computed frequently, describes parabolic shape (along z axis) of gas tail. QVector<Vec3d> gastailVertexArr; // computed frequently, describes parabolic shape (along z axis) of gas tail.
QVector<Vec3d> dusttailVertexArr; // computed frequently, describes parabolic shape (along z axis) of dust tail. QVector<Vec3d> dusttailVertexArr; // computed frequently, describes parabolic shape (along z axis) of dust tail.
QVector<Vec3f> gastailColorArr; // NEW computed for every 5 mins, modulates gas tail brightness for extinction QVector<Vec3f> gastailColorArr; // NEW computed for every 5 mins, modulates gas tail brightness for extinction
QVector<Vec3f> dusttailColorArr; // NEW computed for every 5 mins, modulates dust tail brightness for extinction QVector<Vec3f> dusttailColorArr; // NEW computed for every 5 mins, modulates dust tail brightness for extinction
static QVector<float> tailTexCoordArr; // computed only once for all comets! static QVector<float> tailTexCoordArr; // computed only once for all comets!
static QVector<unsigned short> tailIndices; // computed only once fo r all comets! static QVector<unsigned short> tailIndices; // computed only once fo r all comets!
 End of changes. 7 change blocks. 
5 lines changed or deleted 12 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/