This function adds a movieclip (ie. a star) to the HR Diagram. The arguments:
linkageName
is the library name of the movieclip to attach – if it is null
then "HR Diagram Dot"
is used. There is another movieclip, "HR Diagram Disc"
, available in the component's resources folder, and of course you can make your own. See the section on the object movieclip options at the bottom of this page.name
is the unique identifier for the object. After the object is attached you can access the movieclip with the reference to diagramMC.name
. Use null
if you don't need to access the movieclip.depth
is the depth of the object's movieclip. Use null
if you don't care what depth the movieclip is attached at.layerName
should be the name of a layer that has already been created with addObjectLayer
. Use null
if you don't want the object to be added to an objects layer.initObject
is an optional parameter that can be used to pass properties to the newly attached object, such as the object's position or style properties for the movieclip.
Note that an object will not move up and down in response to distanceModulus
unless it is added to a layer whose keepFixed
property is false
.
An object's position in the HR diagram is defined by an x-coordinate property and a y-coordinate property. Acceptable x-coordinate properties are temp
, logTemp
, type
, and BV
. Here type
is assumed to be the spectral type expressed as a number – use getSpectralTypeNumber
(see below) to convert a standard spectral type string to a number. Acceptable y-coordinate properties are lum
, logLum
, absBolMag
, absVisMag
, appBolMag
, and appVisMag
. Note that logTemp
and logLum
are automatically calculated when the temp
and lum
properties change (but not the other way around).
When updateObjects
is called it first looks for the properties on the object that are the same as those that define the axis scale. If these properties are not found on the object then the function looks for other properties to convert. For example, if the x-axis is spectral type but only temp
(and logTemp
) are defined on the object, type
is calculated using a conversion function.
Call update
or updateObjects
after adding objects. The following example adds the sun to the HR Diagram using the default dot:
// define the sun's position and the style for the dot on the // init object (the sun's position could be defined multiple ways) var initObj = {}; initObj.type = 42; initObj.absVisMag = 4.75; initObj.dotSize = 6; initObj.dotColor = 0xffcc00; initObj.outlineAlpha = 100; initObj.outlineColor = 0xa0a0a0; diagramMC.addObject(null, "sun", null, null, initObj); diagramMC.updateObjects();
This function positions objects and should be called after adding objects or changing their definitions. The optional subset
parameter can be used to have the component update just a limited subset of the objects. To update all objects on a layer subset
should be the layer's name. To update a single object subset
should be the object's name. To update a list of objects subset
should be an array of object names.
Obscure problem warning: if the object you want to update belongs to a layer whose keepFixed
property is false
you need to update the entire layer (by name, not by list) or all objects – do not update just that object.
This function removes the object with the given name. No update is required after calling it. Consider also removeObjectLayer
and removeAllObjects
.
This function removes all objects and object layers. No update is required after calling it.
This function adds a group of stars from one of several built-in lists. The list used is specified by groupName
, which can take one of the following four values:
"brightStars"
- This group consists of the 150 brightest stars (in apparent magnitude) minus the 5 that would also be in the nearby star list (also, one star was removed for being a nova). So this group consists of 144 stars."nearbyStars"
- This group contains the stars from the 100 nearest stellar systems. Sub-stellar objects and white dwarfs are not included in the list, and 5 stars that would in this group have been removed since they would also be in the bright star group. This group has 119 stars."brightAndNearbyStars"
- This group consists of the 5 stars that would be in both the bright star and nearby star groups."nearbyWhiteDwarfs"
- This group consists of the 8 white dwarfs that are found in the 100 nearest systems.
The stars are added to a newly created layer with the same name as groupName
. If linkageName
is left undefined or is null
the stars use the "HR Diagram Dot"
movieclip. The initObj
contains properties to pass to the stars' movieclips when they are attached. If no initObj
is provided the default styles are blue for the bright stars (0x6060ff), green for the nearby stars (0x409040), red for the bright and nearby stars (0xff0000), and black for the white dwarfs (0x000000).
A call to updateObjects
or update
is necessary after calling plotStars
. Example code:
// adding the stars (using custom appearance for the white dwarfs) diagramMC.plotStars("brightStars"); diagramMC.plotStars("nearbyStars"); diagramMC.plotStars("brightAndNearbyStars"); diagramMC.plotStars("nearbyWhiteDwarfs", null, {dotSize: 3, dotColor: 0x8080ff}); // position and show the objects diagramMC.updateObjects(); // toggling the visibility of a group diagramMC.nearbyWhiteDwarfs._visible = false; // removing a group diagramMC.removeObjectLayer("brightStars");
An objects layer makes it easy to add, remove, and toggle the visibility of a group of objects. An objects layer is also the best way to add stars that will move up and down when distanceModulus
changes. The arguments:
layerName
specifies the name of the layer, which allows it to be accessed and referred to.keepFixed
is an optional parameter which, if false
(the default), allows stars added to this layer to move up and down when the distanceModulus
property changes. Note that it makes sense for this property to be false
only if the stars on the layer are defined by their apparent magnitudes.depth
is an optional parameter to specify the depth of the layer. Layer depths are distinct from object depths – objects added to a layer will appear behind objects not added to a layer as well as objects added to another layer with a higher depth. Use null
to have the component determine the depth.objectsList
is an optional list of objects to add to this layer after it has been created. This list should consist of the initObj
objects that you would pass for each star if you were using addObject
function. It is not possible to give a name to or control the depth of objects added through this method.linkageName
is the name of the movieclip to use for the objects added from the objectsList
. The default is "HR Diagram Dot"
.
If you add objects through this method you will need to call updateObjects
or update
afterwards. Example code:
// a list of stars to add to the layer (if you wanted to set // style properties as well this is where you would do it) hyadesList = [ {appVisMag: 7.4, BV: 0.566}, {appVisMag: 7.39, BV: 0.56}, {appVisMag: 7.4, BV: 0.57}, etc. // create a layer and add the list of stars at the same time, // note that since keepFixed is false this layer will move // up and down when distanceModulus changes diagramMC.addObjectLayer("hyades", false, null, hyadesList); // call updateObjects since we've added objects diagramMC.updateObjects(); // hide the layer diagramMC.hyades._visible = false; // remove the layer diagramMC.removeObjectLayer("hyades");
This function removes the layer and all objects on it. No update is required.
This property shifts the apparent magnitude system up and down. This means that the apparent magnitude scales move, objects defined by apparent magnitudes move, and objects on a layer where keepFixed
is false
move. The distance modulus is defined as the difference between apparent and absolute magnitude scales: m - M. No update is required after changing this property if the only objects defined by apparent magnitude are on object layers. Otherwise you will need to call updateObjects
or update
.
This universal update function updates every aspect of the HR Diagram. Since the component is somewhat CPU intensive you should usually call only the necessary minimum of the partial update functions, which are updateObjects
, updateScales
, updateIsoradiusLines
, and updateLuminosityClassLines
.
This function sets the x-coordinate system of the diagram. Valid options for type are "logTemp"
, "type"
, and "BV"
. The axis type specifies how object positions are calculated, not which scales are shown at the top and bottom of the plot (see showScale
for that).
The optional min
and max
properties can be used to specify the horizontal range. These values are expected to be in the units of the axis type. For reference, the default ranges used are [0, 70] for "type"
, [-0.322, 2.160] for "BV"
, and [3.359, 4.701] for "logTemp"
.
Call update
after calling this function.
This function sets the y-coordinate system of the diagram. Valid options for type are "logLum"
, "absBolMag"
, and "absVisMag"
. The optional min
and max
properties can be used to define the vertical range. The default ranges are [-5, 6] for "logLum"
and [-10.321, 17.309] for the magnitude scales. The axis type specifies how object positions are calculated, not which scales are shown at the left and right of the plot (see showScale
). Call update
after calling this function.
Use this function to set which scales appear along the sides of the plot. side
can be one of "top"
, "bottom"
, "left"
, or "right"
depending on whether the scale type specified is a horizontal or vertical one. Horizontal scale types are "logTemp"
, "type"
, and "BV"
, while vertical scale types are "logLum"
, "absBolMag"
, "absVisMag"
, "appBolMag"
, and "appVisMag"
. If type
is anything other than one of these options then no scale will be shown on the given side (assuming side
is valid). Therefore you can use null
for type
if you want to remove a scale. Call updateScales
or update
after calling this function.
See the notes at the bottom of this page to learn how to control the appearance of a scale.
updateScales
redraws the scales shown around the sides of the plot. Call it after calling the showScale
function.
This property toggles the visibility of the isoradius lines. The effect is immediate – no update is required.
These properties control which isoradius lines appear, whether they are labelled, and what the labelled text is. If isoradiusLinesList does not exist then labelled isoradius lines are displayed for every power of ten of the radius within the range defined by isoradiusMin
(default 0.0001) and isoradiusMax
(default 1000). This is the default situation.
However, if the isoradiusLinesList
array exists then only those lines specified in it will be shown. Each entry in the array should be an object with a radius
property. Additionally, you can use the optional properties hideLabel
and labelText
(which allow for the sup
, sub
and sol
tags).
Call updateIsoradiusLines
or update
after changing any of these properties. An example:
diagramMC.isoradiusLinesList = [{radius: 0.1}, {radius: 1, labelText: "1 R<sol>"}, {radius: 10, hideLabel: true}, {radius: 200, labelText: "2×10<sup>2</sup> R<sol>"}]; diagramMC.updateIsoradiusLines();
These are the properties that control the appearance of an isoradius line. isoradiusCurvesColor
(default 0x669933) sets the color of the curves and labels, and isoradiusCurvesAlpha
(default 100) sets the alpha of curves and labels. isoradiusCurvesLineThickness
(default 1) sets the thickness of the curves.
isoradiusLabelMargin
(default 5) controls how close the labels are to the edge of the plot. isoradiusLabelBackgroundAlpha
(default 80) controls how opaque the fill behind the labels appears. Finally, isoradiusLabelTextFormat
(the default is determined from the fonts movieclip in the resources folder) specifies the text format used for the labels.
Call updateIsoradiusLines
or update
after changing these properties.
Call this function to redraw the isoradius lines (needed after changing the isoradiusLinesList
, for example).
Use this function to select which luminosity classes are shown. Either updateLuminosityClassLines
or update
must be called to see the changes. How the argument is interpreted:
arg
is "all"
then all luminosity classes will be shown.arg
is one of the strings "I"
, "II"
, "III"
, "IV"
, or "V"
, then the indicated luminosity class line will be shown (along with any lines that were already visible).arg
is an array of strings then only the indicated lines will be shown, e.g. arg = ["V", "I"]
would show only the main sequence (V) and supergiant (I) classes, even if others were previously visible."none"
has the same effect as setting showLuminosityClassLines
to false
(but unlike doing that you will need to call an update function).
These are the properties that control the appearance of the luminosity class lines. luminosityClassCurvesColor
(default 0xff6666) sets their color, luminosityClassCurvesLineThickness
(default 1) set the line thickness, and luminosityClassCurvesAlpha
(default 100) sets the transparency. Call updateLuminosityClassLines
or update
after changing these properties.
This property toggles the visibility of all the luminosity classes at once. Even if set to true
only those luminosity class lines chosen with setShownLuminosityClass
will be shown. The change is immediate – no update required.
This function redraws the luminosity class lines.
This function returns an object with all of the x and y coordinate properties defined on it, as well as the bolometric correction. The argument screenPoint
should be an object with x
and y
properties, which are the screen coordinates relative to the diagram's origin (lower left corner, with negative y values going up).
Specifically, the returned object will have the following properties defined on it: temp
, logTemp
, BV
, type
, BC
, lum
, logLum
, absVisMag
, absBolMag
, appVisMag
, and appBolMag
.
There are many conversion functions on the component that you may want to take advantage of. These functions take the form getAFromB
, where A and B stand for the various properties that can be used for an axis. For horizontal axis conversions A and B can be any of "LogTemp", "BV", and "Type". For vertical axis conversions A and B can be any of "LogLum", "AbsBolMag", "AbsVisMag", "AppBolMag", and "AppVisMag". For conversions between bolometric and visual systems (e.g. getLogLumFromAppVisMag
) the second argument is expected to be the bolometric correction, which can be calculated with the function getBCFromLogTemp
. Note the capitalization in the strings.
This function returns the spectral type number associated with a spectral type expressed as a string. For example, if typeStr
is "G2"
the function returns 42. This function is provided to assist in assigning the type
property of objects, which the component assumes to be a number. See getLogLumFromLogTempAndClass
below for an example.
This function calculates the luminosity of a star given its temperature and luminosity class. class
should be a number, not a string (e.g. 5 for class V). Here's an example showing how to plot a G7 main sequence star (also demonstrating the getSpectralTypeNumber
function):
var type = diagramMC.getSpectralTypeNumber("G7"); var logTemp = diagramMC.getLogTempFromType(type); var logLum = diagramMC.getLogLumFromLogTempAndClass(logTemp, 5); var initObj = {}; initObj.logTemp = logTemp; initObj.logLum = logLum; diagramMC.addObject(null, null, null, null, initObj);
Sets the dimensions of the plot window. Call update
after changing.
These properties affect the appearance of the plot. backgroundColor
(default 0xffffff) and backgroundAlpha
(default 100) control the appearance of the plot area. borderAndScalesColor
(default 0x000000) sets the color of the border and scales, while borderAndScalesLineThickness
(default 1) and borderAndScalesAlpha
(default 100) control line thickness and transparency of the border and scale tickmarks.
The following sections explain how to control the appearance of the scales. Call updateScales
or update
after changing any of the properties described below.
The text styles used for all scales are determined by axisLabelTextFormat
, and tickmarkLabelTextFormat
. The defaults for these formats are acquired from the fonts movieclip in the component's resources folder at initialization (assuming they have not been provided in an init object), but can be changed at any time after that.
The string used to label this axis is defined by logTempAxisLabel
. The default is "Temperature (K)". The placement of the label is controlled by the logTempAxisLabelSpacing
property, whose default is 25.
The optional logTempLabelsList
property can be used to specify what temperature values should have a tickmark and label. This array should be a list of a strings which are numbers (that is, they can be correctly converted to numbers by the parseFloat
function).
The string used to label this axis is defined by BVAxisLabel
. The default is "B-V Color Index". The placement of the label is controlled by the BVAxisLabelSpacing
property, whose default is 25.
Several optional properties can be used to control the appearance of this axis. The property BVLabelsList
can be used to specify which values should be labeled. This array should be a list of a strings which are numbers (that is, they can be correctly converted to numbers by the parseFloat
function).
The BVMinorStep
specifies the spacing between tickmarks. The default is 0.1. The BVMajorMultiple
property specifies which tickmarks are major tickmarks. The default is 5. Therefore, by default there are tickmarks at ... -0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.50, 0.6, ... where the ones in bold would be major tickmarks.
The string used to label this axis is defined by typeAxisLabel
. The default is "Spectral Type". The placement of the label is controlled by the typeAxisLabelSpacing
property, whose default is 22.
typeNumTickmarks
(default 1) is the the number of tickmarks to use for each lettered spectral type and can be any of the numbers 0 through 5, or 10. The typeLabelSpacing
property (default 4) determines the spacing of the spectral type letters from the axis. The typeTickmarkLengths
array (default [5, 3, 4]) controls the lengths of the various major and minor tickmarks depending on the the number of tickmarks shown. typeShowLabels
determines whether labels are shown.
Each of the five types of vertical axis is controlled by properties of the form typeAxisLabel
, typeAxisLabelSpacing
, typeLabelSpacing
, and typeLabelMultiple
, where type
is one of the following strings: "logLum", "absBolMag", "absVisMag", "appBolMag", and "appVisMag". The axis label is the label used for the axis, the axis label spacing controls how far this label is placed from the edge of the plot, the label spacing controls the placement of the tickmarks labels, and the label multiple controls which major tickmarks get labels. For the luminosity scale the defaults of the last three properties are 47, 10, and 1 (meaning that the axis label is 47 pixels from the edge of the plot, the axis labels are 10 pixels from the edge, and labels are shown for each power of ten tickmark). For the magnitude scales the defaults are 40, 10, and 2.
The following sections explain how to customize the appearance of the dot and disc object movieclips provided with the component.
The HR Diagram Dot (the default object movieclip) properties and defaults are: dotColor
(0x808080), dotAlpha
(100), dotSize
(2), outlineThickness
(0), outlineColor
(0x606060), and outlineAlpha
(0). These can all be set via the initObj
when adding the object. If the properties change later call the update
function on the dot movieclip.
The HR Diagram Disc properties and defaults are: labelText
(""), labelColor
(0xffffff), discColor
(0xff0000), discAlpha
(100), discRadius
(8), outlineThickness
(0), outlineColor
(0x909090), and outlineAlpha
(0). These can all be set through the initObj
when adding the object. If you change one of the properties later you will need to call an update function on the disc movieclip. Call updateLabel
after changing the first two properties and updateDisc
after changing any of the last six properties (or call update
to call both of these functions).