public class EllipseSkyMatchEngine extends AbstractSkyMatchEngine
Number
objects, as follows:
Two tuples are considered to match if their ellipses touch or partially overlap. The match score is a normalized value; it is zero for concentric ellipses, 1 if the centre of one ellipse falls on the circumference of the other, and 2 if the ellipses just touch. Intermediate values are assumed for intermediate situations.
Other RA/Dec-like sky coordinate systems may alternatively be used for the alpha/delta coordinates.
The calculations are approximate since in some cases they rely on projecting the ellipses onto a Cartesian plane before evaluating the match, so for large ellipses the criterion will be less exact. For objects the size of most observed stars and galaxies, this approximation is not expected to be problematic.
The calculations are currently done using numerical optimisation.
Modifier and Type | Class and Description |
---|---|
static class |
EllipseSkyMatchEngine.InDegrees
MatchEngine class that behaves like EllipseSkyMatchEngine but uses
human-friendly units (degrees and arcseconds) rather than radians
for tuple elements and match parameters.
|
Constructor and Description |
---|
EllipseSkyMatchEngine(SkyPixellator pixellator,
double scale)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
java.util.function.Supplier<Coverage> |
createCoverageFactory()
Returns a supplier for coverage objects.
|
java.util.function.Supplier<MatchKit> |
createMatchKitFactory()
Returns a factory for MatchKit instances corresponding
to the current settings of this object.
|
DescribedValue[] |
getMatchParameters()
Returns a set of DescribedValue objects whose values can be modified
to modify the matching criteria.
|
ValueInfo |
getMatchScoreInfo()
Returns a description of the value returned by the
MatchKit.matchScore(java.lang.Object[], java.lang.Object[]) method. |
double |
getScale()
Returns the length scale.
|
double |
getScoreScale()
Returns a scale value for the match score.
|
ValueInfo[] |
getTupleInfos()
Returns a set of ValueInfo objects indicating what is required for
the elements of each tuple.
|
void |
setRecogniseCircles(boolean recogniseCircles)
Determines whether short cuts should be taken in the calculations
when the ellipses are actually circles.
|
void |
setScale(double scale)
Sets the length scale.
|
String |
toString() |
calculateSeparation, getPixellator, getTuningParameters, isSkyPosition
public EllipseSkyMatchEngine(SkyPixellator pixellator, double scale)
pixellator
- handles sky pixellisationscale
- initial value for length scale, in radianspublic void setScale(double scale)
setScale
in class AbstractSkyMatchEngine
scale
- rough value of per-object errors, in radianspublic double getScale()
getScale
in class AbstractSkyMatchEngine
public void setRecogniseCircles(boolean recogniseCircles)
recogniseCircles
- whether to take circle-specific short cutspublic ValueInfo[] getTupleInfos()
MatchEngine
nullable
attribute has a special meaning: if true it means that it makes
sense for this element of the tuple to be always blank (for instance
assigned to no column).public DescribedValue[] getMatchParameters()
MatchEngine
DescribedValue.setValue(java.lang.Object)
on the
returned objects.public ValueInfo getMatchScoreInfo()
MatchEngine
MatchKit.matchScore(java.lang.Object[], java.lang.Object[])
method. The content class should be numeric
(though need not be Double
), and the name,
description and units should be descriptive of whatever the
physical significance of the value is.
If the result of matchScore
is not interesting
(for instance, if it's always either 0 or -1),
null
may be returned.public java.util.function.Supplier<MatchKit> createMatchKitFactory()
MatchEngine
The returned value is immutable, and is not affected by subsequent changes of the settings of this object.
public java.util.function.Supplier<Coverage> createCoverageFactory()
MatchEngine
Coverage.createTestFactory()
method returns false
is guaranteed not to match any tuple in A according to this object's
match criteria.
The returned value is immutable, and is not affected by subsequent changes of the settings of this object.
If no suitable implementation is available, null may be returned.
public double getScoreScale()
MatchEngine
matchScore
/MatchEngine.getScoreScale()
is of order unity, and is thus comparable between
different match engines.
As a general rule, the result should be the maximum value ever
returned from the matchScore
method,
corresponding to the least good successful match.
For binary MatchEngine implementations
(all matches are either score=0 or failures)
a value of 1 is recommended.
If nothing reliable can be said about the scale, NaN may be returned.
public String toString()
toString
in class AbstractSkyMatchEngine
Copyright © 2024 Central Laboratory of the Research Councils. All Rights Reserved.