Class StarGroup
- java.lang.Object
-
- All Implemented Interfaces:
com.badlogic.gdx.utils.Disposable
,IObserver
,I3DTextRenderable
,ILineRenderable
,IModelRenderable
,IQuadRenderable
,IRenderable
,IFocus
,IProperMotion
,IStarContainer
,IStarFocus
,IPosition
public class StarGroup extends ParticleGroup implements ILineRenderable, IStarFocus, IQuadRenderable, IModelRenderable, IObserver
A particle vgroup which additionally to the xyz position, supports color and magnitude. id x y z pmx pmy pmz appmag absmag col size additional
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
StarGroup.StarBean
Contains info on one starclass
StarGroup.UpdaterTask
-
Nested classes/interfaces inherited from class gaia.cu9.ari.gaiaorbit.scenegraph.ParticleGroup
ParticleGroup.ParticleBean
-
Nested classes/interfaces inherited from class gaia.cu9.ari.gaiaorbit.scenegraph.SceneGraphNode
SceneGraphNode.RenderGroup, SceneGraphNode.TLV3, SceneGraphNode.TLV3D
-
-
Field Summary
-
Fields inherited from class gaia.cu9.ari.gaiaorbit.scenegraph.ParticleGroup
colorNoise, count, datafile, disposed, factor, fixedMeanPosition, inGpu, lastSortTime, offset, pointData, profileDecay, provider
-
Fields inherited from class gaia.cu9.ari.gaiaorbit.scenegraph.FadeNode
catalogInfo, highlighted, hlci, hlColor, hlColorFloat, hli, inSceneGraph, labelColour, labelPosition
-
Fields inherited from class gaia.cu9.ari.gaiaorbit.scenegraph.AbstractPositionEntity
cc, coordinates, copy, distToCamera, octant, octantId, pos, posSph, size, viewAngle, viewAngleApparent
-
Fields inherited from class gaia.cu9.ari.gaiaorbit.scenegraph.SceneGraphNode
aux3d1, aux3d2, aux3d3, aux3d4, aux3f1, aux3f2, aux3f3, aux3f4, children, computed, ct, id, localTransform, name, namekey, numChildren, opacity, orientation, parent, parentkey, parentName, ROOT_NAME, sg, translation
-
-
Constructor Summary
Constructors Constructor Description StarGroup()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
addToIndex(com.badlogic.gdx.utils.ObjectMap<java.lang.String,SceneGraphNode> map)
Special actions to be taken for this object when adding to the index.protected void
addToRenderLists(ICamera camera)
Adds this entity to the necessary render lists after the distance to the camera and the view angle have been determined.void
computeFixedMeanPosition()
com.badlogic.gdx.utils.Array<StarGroup.StarBean>
data()
Returns the data listvoid
dispose()
void
doneLoading(com.badlogic.gdx.assets.AssetManager manager)
protected Vector3d
fetchPosition(ParticleGroup.ParticleBean pb, Vector3d campos, Vector3d dest, double deltaYears)
Fetches the real position of the particle.com.badlogic.gdx.utils.ObjectIntMap<java.lang.String>
generateIndex(com.badlogic.gdx.utils.Array<StarGroup.StarBean> pointData)
Generates the index (maps star name and id to array index) and computes the geometric center of this star vgroupfloat
getAbsmag()
Gets the absolute magnitudeVector3d
getAbsolutePosition(java.lang.String name, Vector3d aux)
Returns the absolute position of the entity identified by name within this entity in the native reference systemfloat
getAppmag()
Gets the apparent magnitudelong
getCandidateId()
Returns the id of the focus candidate of this object.java.lang.String
getCandidateName()
Returns the name of the focus candidate of this object.double
getCandidateViewAngleApparent()
Returns the candidate apparent view angle (view angle corrected with the field of view) of this entity, in radiansint
getCatalogSource()
Gets the catalog source of this star.float[]
getClosestCol()
Returns the color of the closest stardouble
getClosestDist()
Returns the closest star distance to the camerajava.lang.String
getClosestName()
Name of closest star to cameraVector3d
getClosestPos(Vector3d out)
Returns the position of the closest star in camera coordinatesdouble
getClosestSize()
Returns the size of the closest starfloat
getColor(int index)
static StarGroup
getDefaultStarGroup(java.lang.String name, com.badlogic.gdx.utils.Array<StarGroup.StarBean> data)
Creates a default star vgroup with some sane parameters, given the name and the datastatic StarGroup
getDefaultStarGroup(java.lang.String name, com.badlogic.gdx.utils.Array<StarGroup.StarBean> data, boolean fullInit)
Creates a default star vgroup with some sane parameters, given the name and the dataprotected double
getDeltaYears()
Returns the delta years to integrate the proper motion.java.lang.Double
getEpoch()
Returns the epoch in Julian Days used for the stars in this vgroupIFocus
getFocus(java.lang.String name)
Prepares the candidate with the given namedouble
getFocusSize()
Default size if not in data, 1e5 kmdouble
getFuzzyRenderSize(double size, double radius, double distToCamera, double viewAngle, double thDown, double thUp)
int
getGlType()
int
getHip()
Returns the HIP number of this star, or negative if it has no HIP numberlong
getId()
Returns the idfloat
getLineWidth()
double
getMuAlpha()
Returns the mu alpha in mas/yrdouble
getMuDelta()
Returns the mu delta in mas/yrjava.lang.String
getName()
Returns name of focusVector3d
getPredictedPosition(Vector3d aux, ITimeFrameProvider time, ICamera camera, boolean force)
OverridesParticleGroup
's implementation by actually integrating the position using the proper motion and the given time.double
getRadialVelocity()
Returns the radial velocity in km/sdouble
getRadius()
Returns the radius in internal unitsdouble
getRadius(int i)
double
getSize(int i)
Returns the size of the particle at index iboolean
hasAtmosphere()
void
initialize()
void
notify(Events event, java.lang.Object... data)
void
regenerateIndex()
protected void
removeFromIndex(com.badlogic.gdx.utils.ObjectMap<java.lang.String,SceneGraphNode> map)
Special actions to be taken for this object when removing from the index.void
render(LineRenderSystem renderer, ICamera camera, float alpha)
Proper motion renderingvoid
render(ExtSpriteBatch batch, ExtShaderProgram shader, FontRenderSystem sys, RenderingContext rc, ICamera camera)
Label renderingvoid
render(IntModelBatch modelBatch, float alpha, double t)
Model renderingvoid
render(ExtShaderProgram shader, float alpha, IntMesh mesh, ICamera camera)
Billboard renderingvoid
setData(com.badlogic.gdx.utils.Array<StarGroup.StarBean> pointData)
void
setData(com.badlogic.gdx.utils.Array<StarGroup.StarBean> pointData, boolean regenerateIndex)
void
setEpoch(java.lang.Double epochJd)
Sets the epoch to use for the stars in this vgroupvoid
textPosition(ICamera cam, Vector3d out, float len, float rad)
float
textScale()
Returns the text scale for the scale varying in the shadervoid
update(ITimeFrameProvider time, Vector3d parentTransform, ICamera camera, float opacity)
void
updateAdditional(ITimeFrameProvider time, ICamera camera)
Updates the additional information array, to use for sorting.void
updateFocus(ITimeFrameProvider time, ICamera camera)
Updates the parameters of the focus, if the focus is active in this vgroupvoid
updateSorter(ITimeFrameProvider time, ICamera camera)
Sorts the list of particles using the apparent magnitude (view angle) criterion.-
Methods inherited from class gaia.cu9.ari.gaiaorbit.scenegraph.ParticleGroup
addFocusableObjects, addHit, computeGeomCentre, computeGeomCentre, getAbsolutePosition, getAlpha, getBaseOpacity, getCandidateIndex, getColor, getComputedAncestor, getDelta, getDistToCamera, getFirstStarAncestor, getOrientationQuaternion, getPosSph, getProvider, getRotationComponent, getSize, getStarCount, getTextOpacity, getViewAngle, getViewAngleApparent, highlight, highlight, highlightedSizeFactor, isActive, isCoordinatesTimeOverflow, isLabel, makeFocus, mustAddToIndex, renderText, setColornoise, setDatafile, setFactor, setFocusIndex, setPosition, setProfiledecay, setProvider, size, text, textColour, textDepthBuffer, textPosition, textSize, update, updateLocalValues, withinMagLimit
-
Methods inherited from class gaia.cu9.ari.gaiaorbit.scenegraph.FadeNode
getCatalogInfo, isHighlighted, isVisible, nextHightlightColorIndex, setCataloginfo, setCatalogInfo, setFadein, setFadeout, setLabelcolor, setLabelposition, setPositionobjectname, setUp, setVisible, updateLocal
-
Methods inherited from class gaia.cu9.ari.gaiaorbit.scenegraph.AbstractPositionEntity
computeFuturePosition, getAbsoluteOrientation, getHeight, getHeight, getHeight, getHeightScale, getNext, getOctant, getPos, getPosition, getPosition, getSimpleCopy, isCopy, mustUpdatePosition, render2DLabel, render2DLabel, render2DLabel, render2DLabel, render3DLabel, setColor, setColor, setCoordinates, setSize, setSize
-
Methods inherited from class gaia.cu9.ari.gaiaorbit.scenegraph.SceneGraphNode
add, add, addChild, addChild, addNodes, addToRender, getAggregatedChildren, getChildByName, getChildByNameAndType, getChildrenByType, getComponentType, getCt, getLineCopy, getNode, getNode, getOpacity, getOrientation, getRoot, getSceneGraphDepth, getVelocity, insert, isInRender, isInRender, isValidPosition, isVisibilityOn, removeChild, removeFromRender, returnToPool, setComputedFlag, setCt, setCt, setId, setName, setNamekey, setParent, setParentkey, toString, updateNames, updateNamesRec
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface gaia.cu9.ari.gaiaorbit.scenegraph.IFocus
addHit, getAbsolutePosition, getAlpha, getCt, getDelta, getDistToCamera, getFirstStarAncestor, getHeight, getHeight, getHeight, getHeightScale, getNext, getOctant, getOrientation, getOrientationQuaternion, getPos, getPosSph, getRotationComponent, getSceneGraphDepth, getSize, getViewAngle, getViewAngleApparent, isActive, isCoordinatesTimeOverflow, isCopy, makeFocus, withinMagLimit
-
Methods inherited from interface gaia.cu9.ari.gaiaorbit.render.IRenderable
getComponentType, getDistToCamera, getOpacity
-
-
-
-
Method Detail
-
initialize
public void initialize()
- Overrides:
initialize
in classParticleGroup
-
doneLoading
public void doneLoading(com.badlogic.gdx.assets.AssetManager manager)
- Overrides:
doneLoading
in classParticleGroup
-
data
public com.badlogic.gdx.utils.Array<StarGroup.StarBean> data()
Returns the data list- Overrides:
data
in classParticleGroup
- Returns:
- The data list
-
setData
public void setData(com.badlogic.gdx.utils.Array<StarGroup.StarBean> pointData)
-
setData
public void setData(com.badlogic.gdx.utils.Array<StarGroup.StarBean> pointData, boolean regenerateIndex)
-
regenerateIndex
public void regenerateIndex()
-
generateIndex
public com.badlogic.gdx.utils.ObjectIntMap<java.lang.String> generateIndex(com.badlogic.gdx.utils.Array<StarGroup.StarBean> pointData)
Generates the index (maps star name and id to array index) and computes the geometric center of this star vgroup- Parameters:
pointData
- The star data- Returns:
- An map{string,int} mapping names/ids to indexes
-
computeFixedMeanPosition
public void computeFixedMeanPosition()
-
update
public void update(ITimeFrameProvider time, Vector3d parentTransform, ICamera camera, float opacity)
- Overrides:
update
in classParticleGroup
-
updateFocus
public void updateFocus(ITimeFrameProvider time, ICamera camera)
Updates the parameters of the focus, if the focus is active in this vgroup- Overrides:
updateFocus
in classParticleGroup
- Parameters:
time
- The time frame providercamera
- The current camera
-
getPredictedPosition
public Vector3d getPredictedPosition(Vector3d aux, ITimeFrameProvider time, ICamera camera, boolean force)
OverridesParticleGroup
's implementation by actually integrating the position using the proper motion and the given time.- Specified by:
getPredictedPosition
in interfaceIFocus
- Overrides:
getPredictedPosition
in classParticleGroup
- Parameters:
aux
- The out vector where the result will be stored.time
- The time frame provider.camera
- The camera.force
- Whether to force the computation if time is off.- Returns:
- The aux vector for chaining.
-
updateAdditional
public void updateAdditional(ITimeFrameProvider time, ICamera camera)
Updates the additional information array, to use for sorting.- Parameters:
camera
-
-
updateSorter
public void updateSorter(ITimeFrameProvider time, ICamera camera)
Sorts the list of particles using the apparent magnitude (view angle) criterion. This should be called only when the camera frustum is significantly changed. By no means should this be called every cycle. Sorting happens always in the working buffer, which is not the active buffer. After sorting, buffers are swapped.- Overrides:
updateSorter
in classParticleGroup
-
addToRenderLists
protected void addToRenderLists(ICamera camera)
Description copied from class:AbstractPositionEntity
Adds this entity to the necessary render lists after the distance to the camera and the view angle have been determined.- Overrides:
addToRenderLists
in classParticleGroup
-
render
public void render(ExtShaderProgram shader, float alpha, IntMesh mesh, ICamera camera)
Billboard rendering- Specified by:
render
in interfaceIQuadRenderable
-
getFuzzyRenderSize
public double getFuzzyRenderSize(double size, double radius, double distToCamera, double viewAngle, double thDown, double thUp)
-
render
public void render(IntModelBatch modelBatch, float alpha, double t)
Model rendering- Specified by:
render
in interfaceIModelRenderable
-
render
public void render(LineRenderSystem renderer, ICamera camera, float alpha)
Proper motion rendering- Specified by:
render
in interfaceILineRenderable
-
getLineWidth
public float getLineWidth()
- Specified by:
getLineWidth
in interfaceILineRenderable
-
getGlType
public int getGlType()
- Specified by:
getGlType
in interfaceILineRenderable
-
render
public void render(ExtSpriteBatch batch, ExtShaderProgram shader, FontRenderSystem sys, RenderingContext rc, ICamera camera)
Label rendering- Specified by:
render
in interfaceI3DTextRenderable
- Overrides:
render
in classParticleGroup
- Parameters:
batch
- The sprite batchshader
- The shadersys
- The font render systemrc
- The render contextcamera
- The camera
-
textScale
public float textScale()
Description copied from interface:I3DTextRenderable
Returns the text scale for the scale varying in the shader- Specified by:
textScale
in interfaceI3DTextRenderable
- Overrides:
textScale
in classParticleGroup
- Returns:
- The scale
-
getFocusSize
public double getFocusSize()
Description copied from class:ParticleGroup
Default size if not in data, 1e5 km- Overrides:
getFocusSize
in classParticleGroup
- Returns:
- The size
-
getRadius
public double getRadius()
Description copied from class:AbstractPositionEntity
Returns the radius in internal units- Specified by:
getRadius
in interfaceIFocus
- Overrides:
getRadius
in classParticleGroup
- Returns:
- The radius of the object, in internal units
-
getRadius
public double getRadius(int i)
- Overrides:
getRadius
in classParticleGroup
-
getAppmag
public float getAppmag()
Description copied from interface:IFocus
Gets the apparent magnitude- Specified by:
getAppmag
in interfaceIFocus
- Overrides:
getAppmag
in classParticleGroup
- Returns:
- The apparent magnitude
-
getAbsmag
public float getAbsmag()
Description copied from interface:IFocus
Gets the absolute magnitude- Specified by:
getAbsmag
in interfaceIFocus
- Overrides:
getAbsmag
in classParticleGroup
- Returns:
- The absolute magnitude
-
getName
public java.lang.String getName()
Description copied from class:ParticleGroup
Returns name of focus- Specified by:
getName
in interfaceIFocus
- Overrides:
getName
in classParticleGroup
- Returns:
- The name
-
getId
public long getId()
Description copied from class:ParticleGroup
Returns the id- Specified by:
getId
in interfaceIFocus
- Specified by:
getId
in interfaceIStarFocus
- Overrides:
getId
in classParticleGroup
- Returns:
- The id
-
getMuAlpha
public double getMuAlpha()
Description copied from interface:IProperMotion
Returns the mu alpha in mas/yr- Specified by:
getMuAlpha
in interfaceIProperMotion
- Returns:
- The mu alpha in mas/yr
-
getMuDelta
public double getMuDelta()
Description copied from interface:IProperMotion
Returns the mu delta in mas/yr- Specified by:
getMuDelta
in interfaceIProperMotion
- Returns:
- The mu delta in mas/yr
-
getRadialVelocity
public double getRadialVelocity()
Description copied from interface:IProperMotion
Returns the radial velocity in km/s- Specified by:
getRadialVelocity
in interfaceIProperMotion
- Returns:
- The radial velocity in km/s
-
getSize
public double getSize(int i)
Returns the size of the particle at index i- Overrides:
getSize
in classParticleGroup
- Parameters:
i
- The index- Returns:
- The size
-
notify
public void notify(Events event, java.lang.Object... data)
- Specified by:
notify
in interfaceIObserver
- Overrides:
notify
in classParticleGroup
-
getCatalogSource
public int getCatalogSource()
Description copied from interface:IStarFocus
Gets the catalog source of this star. Possible values are:- -1: Unknown
- 1: Gaia
- 2: Hipparcos (HYG)
- 3: Tycho
- 4: Other
- Specified by:
getCatalogSource
in interfaceIStarFocus
- Returns:
- The catalog source number
-
getHip
public int getHip()
Description copied from interface:IStarFocus
Returns the HIP number of this star, or negative if it has no HIP number- Specified by:
getHip
in interfaceIStarFocus
- Returns:
- The HIP number
-
getCandidateId
public long getCandidateId()
Description copied from interface:IFocus
Returns the id of the focus candidate of this object. Defaults toIFocus.getId()
- Specified by:
getCandidateId
in interfaceIFocus
- Overrides:
getCandidateId
in classParticleGroup
- Returns:
- The id of the candidate
-
getCandidateName
public java.lang.String getCandidateName()
Description copied from interface:IFocus
Returns the name of the focus candidate of this object. Defaults toIFocus.getName()
- Specified by:
getCandidateName
in interfaceIFocus
- Overrides:
getCandidateName
in classParticleGroup
- Returns:
- The name of the candidate
-
getCandidateViewAngleApparent
public double getCandidateViewAngleApparent()
Description copied from interface:IFocus
Returns the candidate apparent view angle (view angle corrected with the field of view) of this entity, in radians- Specified by:
getCandidateViewAngleApparent
in interfaceIFocus
- Overrides:
getCandidateViewAngleApparent
in classParticleGroup
- Returns:
- The apparent view angle in radians
-
getClosestDist
public double getClosestDist()
Description copied from interface:IStarFocus
Returns the closest star distance to the camera- Specified by:
getClosestDist
in interfaceIStarFocus
- Returns:
- Distance of closest star to camera
-
getClosestName
public java.lang.String getClosestName()
Description copied from interface:IStarFocus
Name of closest star to camera- Specified by:
getClosestName
in interfaceIStarFocus
- Returns:
- The name of the closest star to the camera
-
getClosestSize
public double getClosestSize()
Description copied from interface:IStarFocus
Returns the size of the closest star- Specified by:
getClosestSize
in interfaceIStarFocus
- Returns:
- The size of the closest star
-
getClosestPos
public Vector3d getClosestPos(Vector3d out)
Description copied from interface:IStarFocus
Returns the position of the closest star in camera coordinates- Specified by:
getClosestPos
in interfaceIStarFocus
- Parameters:
out
- The out vector- Returns:
- The out vector with the position
-
getClosestCol
public float[] getClosestCol()
Description copied from interface:IStarFocus
Returns the color of the closest star- Specified by:
getClosestCol
in interfaceIStarFocus
- Returns:
- The color in rgb
-
hasAtmosphere
public boolean hasAtmosphere()
- Specified by:
hasAtmosphere
in interfaceIModelRenderable
-
getFocus
public IFocus getFocus(java.lang.String name)
Description copied from interface:IFocus
Prepares the candidate with the given name- Specified by:
getFocus
in interfaceIFocus
- Overrides:
getFocus
in classParticleGroup
- Parameters:
name
- The name in lower case
-
getAbsolutePosition
public Vector3d getAbsolutePosition(java.lang.String name, Vector3d aux)
Description copied from interface:IFocus
Returns the absolute position of the entity identified by name within this entity in the native reference system- Specified by:
getAbsolutePosition
in interfaceIFocus
- Overrides:
getAbsolutePosition
in classParticleGroup
- Parameters:
name
- The name (lowercase) of the entity to get the position from (useful in case of star groups)aux
- Vector3d to put the return value- Returns:
- The absolute position of the entity if it exists, null otherwise
-
fetchPosition
protected Vector3d fetchPosition(ParticleGroup.ParticleBean pb, Vector3d campos, Vector3d dest, double deltaYears)
Description copied from class:ParticleGroup
Fetches the real position of the particle. It will apply the necessary integrations (i.e. proper motion).- Overrides:
fetchPosition
in classParticleGroup
- Parameters:
pb
- The particle beancampos
- The position of the camera. If null, the camera position is not subtracted so that the coordinates are given in the global reference system instead of the camera reference system.dest
- The destination fectordeltaYears
- The delta years- Returns:
- The vector for chaining
-
getDeltaYears
protected double getDeltaYears()
Description copied from class:ParticleGroup
Returns the delta years to integrate the proper motion.- Overrides:
getDeltaYears
in classParticleGroup
- Returns:
-
setEpoch
public void setEpoch(java.lang.Double epochJd)
Sets the epoch to use for the stars in this vgroup- Parameters:
epochJd
- The epoch in julian days (days since January 1, 4713 BCE)
-
getEpoch
public java.lang.Double getEpoch()
Returns the epoch in Julian Days used for the stars in this vgroup- Returns:
- The epoch in julian days
-
addToIndex
protected void addToIndex(com.badlogic.gdx.utils.ObjectMap<java.lang.String,SceneGraphNode> map)
Description copied from class:SceneGraphNode
Special actions to be taken for this object when adding to the index.- Overrides:
addToIndex
in classSceneGraphNode
- Parameters:
map
- The index
-
removeFromIndex
protected void removeFromIndex(com.badlogic.gdx.utils.ObjectMap<java.lang.String,SceneGraphNode> map)
Description copied from class:SceneGraphNode
Special actions to be taken for this object when removing from the index. Must implement if addToIndex is implemented- Overrides:
removeFromIndex
in classSceneGraphNode
- Parameters:
map
- The index
-
dispose
public void dispose()
- Specified by:
dispose
in interfacecom.badlogic.gdx.utils.Disposable
- Overrides:
dispose
in classParticleGroup
-
getColor
public float getColor(int index)
-
getDefaultStarGroup
public static StarGroup getDefaultStarGroup(java.lang.String name, com.badlogic.gdx.utils.Array<StarGroup.StarBean> data)
Creates a default star vgroup with some sane parameters, given the name and the data- Parameters:
name
- The name of the star vgroup. Any occurrence of '%%SGID%%' in name will be replaced with the id of the star vgroupdata
- The data of the star vgroup- Returns:
- A new star vgroup with sane parameters
-
getDefaultStarGroup
public static StarGroup getDefaultStarGroup(java.lang.String name, com.badlogic.gdx.utils.Array<StarGroup.StarBean> data, boolean fullInit)
Creates a default star vgroup with some sane parameters, given the name and the data- Parameters:
name
- The name of the star vgroup. Any occurrence of '%%SGID%%' in name will be replaced with the id of the star vgroupdata
- The data of the star vgroupfullInit
- Initializes the vgroup right away- Returns:
- A new star vgroup with sane parameters
-
-