Package gaiasky.scenegraph
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 group 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 classStarGroup.StarBeanContains info on one star-
Nested classes/interfaces inherited from class gaiasky.scenegraph.ParticleGroup
ParticleGroup.ParticleBean, ParticleGroup.UpdaterTask
-
Nested classes/interfaces inherited from class gaiasky.scenegraph.SceneGraphNode
SceneGraphNode.RenderGroup, SceneGraphNode.TLV3, SceneGraphNode.TLV3D
-
-
Field Summary
-
Fields inherited from class gaiasky.scenegraph.ParticleGroup
active, background, CAM_DX_TH, ccMax, ccMin, closestAbsolutePos, closestDist, closestName, closestPos, colorNoise, count, datafile, disposed, factor, fixedMeanPosition, focus, index, indices1, indices2, lastSortCameraPos, lastSortTime, maxDistance, meanDistance, metadata, MIN_UPDATE_TIME_MS, minDistance, offset, particleSizeLimits, pointData, profileDecay, provider, updaterTask, updating
-
Fields inherited from class gaiasky.scenegraph.FadeNode
catalogInfo, highlighted, hlc, hlcma, hlcmi, hlcmmax, hlcmmin, hlplain, inSceneGraph, labelcolor, labelPosition
-
Fields inherited from class gaiasky.scenegraph.AbstractPositionEntity
cc, coordinates, copy, distToCamera, octant, octantId, pos, posSph, size, viewAngle, viewAngleApparent
-
Fields inherited from class gaiasky.scenegraph.SceneGraphNode
aux3d1, aux3d2, aux3d3, aux3d4, aux3f1, aux3f2, aux3f3, aux3f4, children, computed, ct, id, localTransform, namekey, names, 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 voidaddToRenderLists(ICamera camera)Adds this entity to the necessary render lists after the distance to the camera and the view angle have been determined.java.util.List<ParticleGroup.ParticleBean>data()Returns the data listvoiddispose()voiddoneLoading(com.badlogic.gdx.assets.AssetManager manager)protected Vector3dfetchPosition(ParticleGroup.ParticleBean pb, Vector3d campos, Vector3d destination, double deltaYears)Fetches the real position of the particle.com.badlogic.gdx.utils.ObjectIntMap<java.lang.String>generateIndex(com.badlogic.gdx.utils.Array<? extends ParticleGroup.ParticleBean> pointData)Generates the index (maps star name and id to array index)floatgetAbsmag()Gets the absolute magnitudeVector3dgetAbsolutePosition(java.lang.String name, Vector3d aux)Returns the absolute position of the entity identified by name within this entity in the native reference systemfloatgetAppmag()Gets the apparent magnitudelonggetCandidateId()Returns the id of the focus candidate of this object.java.lang.StringgetCandidateName()Returns the name of the focus candidate of this object.doublegetCandidateViewAngleApparent()Returns the candidate apparent view angle (view angle corrected with the field of view) of this entity, in radiansintgetCatalogSource()Gets the catalog source of this star.Vector3dgetClosestAbsolutePos(Vector3d out)float[]getClosestCol()Returns the color of the closest stardoublegetClosestDistToCamera()Same asIFocus.getDistToCamera()java.lang.StringgetClosestName()Same asIFocus.getName()Vector3dgetClosestPos(Vector3d out)Returns the position of the closest star in camera coordinatesdoublegetClosestSize()Returns the size of the closest starfloatgetColor(int index)static StarGroupgetDefaultStarGroup(java.lang.String name, java.util.List<ParticleGroup.ParticleBean> data)Creates a default star group with some sane parameters, given the name and the datastatic StarGroupgetDefaultStarGroup(java.lang.String name, java.util.List<ParticleGroup.ParticleBean> data, boolean fullInit)Creates a default star group with some sane parameters, given the name and the dataprotected doublegetDeltaYears()Returns the delta years to integrate the proper motion.java.lang.DoublegetEpoch()Returns the epoch in Julian Days used for the stars in this groupIFocusgetFocus(java.lang.String name)Prepares the candidate with the given namedoublegetFocusSize()Default size if not in data, 1e5 kmdoublegetFuzzyRenderSize(double size, double radius, double distToCamera, double viewAngle, double thDown, double thUp)intgetGlPrimitive()intgetHip()Returns the HIP number of this star, or negative if it has no HIP numberlonggetId()Returns the idfloatgetLineWidth()doublegetMuAlpha()Returns the mu alpha in mas/yrdoublegetMuDelta()Returns the mu delta in mas/yrVector3dgetPredictedPosition(Vector3d aux, ITimeFrameProvider time, ICamera camera, boolean force)OverridesParticleGroup's implementation by actually integrating the position using the proper motion and the given time.doublegetRadialVelocity()Returns the radial velocity in km/sdoublegetRadius()Returns the radius in internal unitsdoublegetRadius(int i)doublegetSize(int i)Returns the size of the particle at index istatic StarGroupgetStarGroup(java.lang.String name, java.util.List<ParticleGroup.ParticleBean> data, DatasetOptions dops)Creates a default star group with some parameters, given the name and databooleanhasAtmosphere()voidinitialize()voidnotify(Events event, java.lang.Object... data)voidrender(LineRenderSystem renderer, ICamera camera, float alpha)Proper motion renderingvoidrender(ExtSpriteBatch batch, ExtShaderProgram shader, FontRenderSystem sys, RenderingContext rc, ICamera camera)Label renderingvoidrender(IntModelBatch modelBatch, float alpha, double t, RenderingContext rc)Model renderingvoidrender(ExtShaderProgram shader, float alpha, IntMesh mesh, ICamera camera)Billboard renderingvoidsetData(java.util.List<ParticleGroup.ParticleBean> pointData, boolean regenerateIndex)voidsetEpoch(java.lang.Double epochJd)Sets the epoch to use for the stars in this groupvoidupdate(ITimeFrameProvider time, Vector3d parentTransform, ICamera camera, float opacity)voidupdateFocus(ITimeFrameProvider time, ICamera camera)Updates the parameters of the focus, if the focus is active in this groupvoidupdateMetadata(ITimeFrameProvider time, ICamera camera)Updates the additional information array, to use for sorting.-
Methods inherited from class gaiasky.scenegraph.ParticleGroup
addFocusableObjects, addHit, addHit, addToIndex, canSelect, computeGeomCentre, computeGeomCentre, computeMeanPosition, computeMinMeanMaxDistances, filter, generateIndex, get, getAbsolutePosition, getAlpha, getBaseOpacity, getCandidateIndex, getColor, getColorMax, getColorMin, getComputedAncestor, getDelta, getDistToCamera, getFirstStarAncestor, getMaxDistance, getMeanDistance, getMinDistance, getName, getNames, getOrientationQuaternion, getParticleGroup, getPosSph, getProvider, getRandomParticleName, getRotationComponent, getSize, getStarCount, getTextOpacity, getViewAngle, getViewAngleApparent, highlight, highlight, highlightedSizeFactor, inGpu, inGpu, initialize, isActive, isCoordinatesTimeOverflow, isLabel, makeFocus, mustAddToIndex, regenerateIndex, removeFromIndex, renderText, setColorMax, setColorMax, setColorMin, setColorMin, setColornoise, setData, setDatafile, setFactor, setFocusIndex, setInGpu, setLabelPosition, setParticlesizelimits, setPosition, setProfiledecay, setProvider, size, swapBuffers, text, textColour, textDepthBuffer, textPosition, textPosition, textScale, textSize, update, updateLocalValues, updateSorter, withinMagLimit
-
Methods inherited from class gaiasky.scenegraph.FadeNode
getCatalogInfo, getHlcma, getHlcmi, getHlcmmax, getHlcmmin, isHighlighted, isHlplain, isVisible, setCataloginfo, setCatalogInfo, setCatalogInfoBare, setFadein, setFadeout, setLabelcolor, setLabelcolor, setLabelposition, setPositionobjectname, setSize, setSize, setUp, setVisible, updateLocal
-
Methods inherited from class gaiasky.scenegraph.AbstractPositionEntity
computeFuturePosition, getAbsoluteOrientation, getHeight, getHeight, getHeight, getHeightScale, getNext, getOctant, getPos, getPosition, getPosition, getSimpleCopy, isCopy, mustUpdatePosition, render2DLabel, render2DLabel, render2DLabel, render2DLabel, render3DLabel, setColor, setColor, setCoordinates
-
Methods inherited from class gaiasky.scenegraph.SceneGraphNode
add, add, addChild, addChild, addName, addNodes, addToRender, getAggregatedChildren, getChildByName, getChildByNameAndType, getChildrenByType, getComponentType, getCt, getLineCopy, getNode, getNode, getOpacity, getOrientation, getRoot, getSceneGraphDepth, getVelocity, hasName, hasName, insert, insert, isInRender, isInRender, isValidPosition, isVisibilityOn, namesConcat, removeChild, removeFromRender, returnToPool, setComputedFlag, setCt, setCt, setId, setName, setNamekey, setNames, 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 gaiasky.scenegraph.IFocus
addHit, addHit, getAbsolutePosition, getAlpha, getCt, getDelta, getDistToCamera, getFirstStarAncestor, getHeight, getHeight, getHeight, getHeightScale, getName, getNames, getNext, getOctant, getOrientation, getOrientationQuaternion, getPos, getPosSph, getRotationComponent, getSceneGraphDepth, getSize, getViewAngle, getViewAngleApparent, hasName, hasName, isActive, isCoordinatesTimeOverflow, isCopy, makeFocus, withinMagLimit
-
Methods inherited from interface gaiasky.render.IRenderable
getComponentType, getDistToCamera, getOpacity
-
-
-
-
Method Detail
-
initialize
public void initialize()
- Overrides:
initializein classParticleGroup
-
doneLoading
public void doneLoading(com.badlogic.gdx.assets.AssetManager manager)
- Overrides:
doneLoadingin classParticleGroup
-
data
public java.util.List<ParticleGroup.ParticleBean> data()
Returns the data list- Overrides:
datain classParticleGroup- Returns:
- The data list
-
setData
public void setData(java.util.List<ParticleGroup.ParticleBean> pointData, boolean regenerateIndex)
- Overrides:
setDatain classParticleGroup
-
generateIndex
public com.badlogic.gdx.utils.ObjectIntMap<java.lang.String> generateIndex(com.badlogic.gdx.utils.Array<? extends ParticleGroup.ParticleBean> pointData)
Generates the index (maps star name and id to array index)- Parameters:
pointData- The star data- Returns:
- An map{string,int} mapping names/ids to indexes
-
update
public void update(ITimeFrameProvider time, Vector3d parentTransform, ICamera camera, float opacity)
- Overrides:
updatein classParticleGroup
-
updateFocus
public void updateFocus(ITimeFrameProvider time, ICamera camera)
Updates the parameters of the focus, if the focus is active in this group- Overrides:
updateFocusin 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:
getPredictedPositionin interfaceIFocus- Overrides:
getPredictedPositionin 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.
-
addToRenderLists
protected void addToRenderLists(ICamera camera)
Description copied from class:AbstractPositionEntityAdds this entity to the necessary render lists after the distance to the camera and the view angle have been determined.- Overrides:
addToRenderListsin classParticleGroup
-
render
public void render(ExtShaderProgram shader, float alpha, IntMesh mesh, ICamera camera)
Billboard rendering- Specified by:
renderin 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, RenderingContext rc)
Model rendering- Specified by:
renderin interfaceIModelRenderable
-
render
public void render(LineRenderSystem renderer, ICamera camera, float alpha)
Proper motion rendering- Specified by:
renderin interfaceILineRenderable
-
getLineWidth
public float getLineWidth()
- Specified by:
getLineWidthin interfaceILineRenderable
-
getGlPrimitive
public int getGlPrimitive()
- Specified by:
getGlPrimitivein interfaceILineRenderable
-
render
public void render(ExtSpriteBatch batch, ExtShaderProgram shader, FontRenderSystem sys, RenderingContext rc, ICamera camera)
Label rendering- Specified by:
renderin interfaceI3DTextRenderable- Overrides:
renderin classParticleGroup- Parameters:
batch- The sprite batchshader- The shadersys- The font render systemrc- The render contextcamera- The camera
-
getFocusSize
public double getFocusSize()
Description copied from class:ParticleGroupDefault size if not in data, 1e5 km- Overrides:
getFocusSizein classParticleGroup- Returns:
- The size
-
getRadius
public double getRadius()
Description copied from class:AbstractPositionEntityReturns the radius in internal units- Specified by:
getRadiusin interfaceIFocus- Overrides:
getRadiusin classParticleGroup- Returns:
- The radius of the object, in internal units
-
getRadius
public double getRadius(int i)
- Overrides:
getRadiusin classParticleGroup
-
getAppmag
public float getAppmag()
Description copied from interface:IFocusGets the apparent magnitude- Specified by:
getAppmagin interfaceIFocus- Overrides:
getAppmagin classParticleGroup- Returns:
- The apparent magnitude
-
getAbsmag
public float getAbsmag()
Description copied from interface:IFocusGets the absolute magnitude- Specified by:
getAbsmagin interfaceIFocus- Overrides:
getAbsmagin classParticleGroup- Returns:
- The absolute magnitude
-
getId
public long getId()
Description copied from class:ParticleGroupReturns the id- Specified by:
getIdin interfaceIFocus- Specified by:
getIdin interfaceIStarFocus- Overrides:
getIdin classParticleGroup- Returns:
- The id
-
getMuAlpha
public double getMuAlpha()
Description copied from interface:IProperMotionReturns the mu alpha in mas/yr- Specified by:
getMuAlphain interfaceIProperMotion- Returns:
- The mu alpha in mas/yr
-
getMuDelta
public double getMuDelta()
Description copied from interface:IProperMotionReturns the mu delta in mas/yr- Specified by:
getMuDeltain interfaceIProperMotion- Returns:
- The mu delta in mas/yr
-
getRadialVelocity
public double getRadialVelocity()
Description copied from interface:IProperMotionReturns the radial velocity in km/s- Specified by:
getRadialVelocityin interfaceIProperMotion- Returns:
- The radial velocity in km/s
-
getSize
public double getSize(int i)
Returns the size of the particle at index i- Overrides:
getSizein classParticleGroup- Parameters:
i- The index- Returns:
- The size
-
notify
public void notify(Events event, java.lang.Object... data)
- Specified by:
notifyin interfaceIObserver- Overrides:
notifyin classParticleGroup
-
getCatalogSource
public int getCatalogSource()
Description copied from interface:IStarFocusGets the catalog source of this star. Possible values are:- -1: Unknown
- 1: Gaia
- 2: Hipparcos (HYG)
- 3: Tycho
- 4: Other
- Specified by:
getCatalogSourcein interfaceIStarFocus- Returns:
- The catalog source number
-
getHip
public int getHip()
Description copied from interface:IStarFocusReturns the HIP number of this star, or negative if it has no HIP number- Specified by:
getHipin interfaceIStarFocus- Returns:
- The HIP number
-
getCandidateId
public long getCandidateId()
Description copied from interface:IFocusReturns the id of the focus candidate of this object. Defaults toIFocus.getId()- Specified by:
getCandidateIdin interfaceIFocus- Overrides:
getCandidateIdin classParticleGroup- Returns:
- The id of the candidate
-
getCandidateName
public java.lang.String getCandidateName()
Description copied from interface:IFocusReturns the name of the focus candidate of this object. Defaults toIFocus.getName()- Specified by:
getCandidateNamein interfaceIFocus- Overrides:
getCandidateNamein classParticleGroup- Returns:
- The name of the candidate
-
getCandidateViewAngleApparent
public double getCandidateViewAngleApparent()
Description copied from interface:IFocusReturns the candidate apparent view angle (view angle corrected with the field of view) of this entity, in radians- Specified by:
getCandidateViewAngleApparentin interfaceIFocus- Overrides:
getCandidateViewAngleApparentin classParticleGroup- Returns:
- The apparent view angle in radians
-
getClosestDistToCamera
public double getClosestDistToCamera()
Description copied from interface:IFocusSame asIFocus.getDistToCamera()- Specified by:
getClosestDistToCamerain interfaceIFocus- Specified by:
getClosestDistToCamerain interfaceIStarFocus- Overrides:
getClosestDistToCamerain classParticleGroup- Returns:
- The distance to the camera in internal units
-
getClosestName
public java.lang.String getClosestName()
Description copied from interface:IFocusSame asIFocus.getName()- Specified by:
getClosestNamein interfaceIFocus- Specified by:
getClosestNamein interfaceIStarFocus- Overrides:
getClosestNamein classParticleGroup- Returns:
- The name
-
getClosestSize
public double getClosestSize()
Description copied from interface:IStarFocusReturns the size of the closest star- Specified by:
getClosestSizein interfaceIStarFocus- Returns:
- The size of the closest star
-
getClosestPos
public Vector3d getClosestPos(Vector3d out)
Description copied from interface:IStarFocusReturns the position of the closest star in camera coordinates- Specified by:
getClosestPosin interfaceIStarFocus- Parameters:
out- The out vector- Returns:
- The out vector with the position
-
getClosestAbsolutePos
public Vector3d getClosestAbsolutePos(Vector3d out)
Description copied from interface:IFocus- Specified by:
getClosestAbsolutePosin interfaceIFocus- Specified by:
getClosestAbsolutePosin interfaceIStarFocus- Overrides:
getClosestAbsolutePosin classParticleGroup- Parameters:
out- Vector3d where to put the return value- Returns:
- The absolute position, same as aux
-
getClosestCol
public float[] getClosestCol()
Description copied from interface:IStarFocusReturns the color of the closest star- Specified by:
getClosestColin interfaceIStarFocus- Returns:
- The color in rgb
-
hasAtmosphere
public boolean hasAtmosphere()
- Specified by:
hasAtmospherein interfaceIModelRenderable
-
getFocus
public IFocus getFocus(java.lang.String name)
Description copied from interface:IFocusPrepares the candidate with the given name- Specified by:
getFocusin interfaceIFocus- Overrides:
getFocusin classParticleGroup- Parameters:
name- The name in lower case
-
getAbsolutePosition
public Vector3d getAbsolutePosition(java.lang.String name, Vector3d aux)
Description copied from interface:IFocusReturns the absolute position of the entity identified by name within this entity in the native reference system- Specified by:
getAbsolutePositionin interfaceIFocus- Overrides:
getAbsolutePositionin 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 destination, double deltaYears)
Description copied from class:ParticleGroupFetches the real position of the particle. It will apply the necessary integrations (i.e. proper motion).- Overrides:
fetchPositionin 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.destination- The destination factordeltaYears- The delta years- Returns:
- The vector for chaining
-
getDeltaYears
protected double getDeltaYears()
Description copied from class:ParticleGroupReturns the delta years to integrate the proper motion.- Overrides:
getDeltaYearsin classParticleGroup- Returns:
-
setEpoch
public void setEpoch(java.lang.Double epochJd)
Sets the epoch to use for the stars in this group- 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 group- Returns:
- The epoch in julian days
-
dispose
public void dispose()
- Specified by:
disposein interfacecom.badlogic.gdx.utils.Disposable- Overrides:
disposein classParticleGroup
-
getColor
public float getColor(int index)
-
getStarGroup
public static StarGroup getStarGroup(java.lang.String name, java.util.List<ParticleGroup.ParticleBean> data, DatasetOptions dops)
Creates a default star group with some parameters, given the name and data- Parameters:
name- The name of the star group. Any occurrence of '%%SGID%%' will be replaced with the id of the star groupdata- The data of the star groupdops- The dataset options- Returns:
- A new star group with the given parameters
-
getDefaultStarGroup
public static StarGroup getDefaultStarGroup(java.lang.String name, java.util.List<ParticleGroup.ParticleBean> data)
Creates a default star group with some sane parameters, given the name and the data- Parameters:
name- The name of the star group. Any occurrence of '%%SGID%%' in name will be replaced with the id of the star groupdata- The data of the star group- Returns:
- A new star group with sane parameters
-
getDefaultStarGroup
public static StarGroup getDefaultStarGroup(java.lang.String name, java.util.List<ParticleGroup.ParticleBean> data, boolean fullInit)
Creates a default star group with some sane parameters, given the name and the data- Parameters:
name- The name of the star group. Any occurrence of '%%SGID%%' in name will be replaced with the id of the star groupdata- The data of the star groupfullInit- Initializes the group right away- Returns:
- A new star group with sane parameters
-
updateMetadata
public void updateMetadata(ITimeFrameProvider time, ICamera camera)
Updates the additional information array, to use for sorting. In stars, we need to take into account the proper motion and the brightness.- Overrides:
updateMetadatain classParticleGroup- Parameters:
time- The current time frame providercamera- The camera
-
-