This cleans up the boundary checks classes. The general idea is to move most of the check logic into the BoundaryCheck
class. The concrete bounds only need to define the boundary shape, i.e. a box or polygon, and everything else is done automatically by the BoundaryCheck
class. This ended up being a major modification and should probably be reviewed as a rewrite.
The following changes are implemented:
BoundaryCheck
and remove low-level helper methods for KDOP-based checks.BoundaryCheck
configuration.BoundaryCheck
wherever possible. This enables support for the different boundary check methods, e.g. tolerance or covariance, in almost all concrete bounds classes..insideLoc0(...)
and .insideLoc1(...)
interfaces in favor of e.g. using the BoundaryCheck
w/ configurable tolerances in either coordinate. Depending on the boundary, having separate checks for just one of two coordinates can be ill-defined and should therefore not be part of the common interface.SurfaceBounds
, PlanarBounds
, and DiscBounds
classes to pure interface classes w/o any implementation or data, and simplify there signatures. Common constructors and assignment operators have been removed.inline
methods.std::sin
, std::cos
.There are a few open questions that have not been addressed:
DiamondBounds
can only be created when the shape is convex. Support for concave shapes was removed. It is not used anywhere, but I'm not sure if that is ok.DiscTrapezoidalBounds
takes a stereo angle as parameter. However, this angle is never used. Is this is a bug or can we remove this parameter.EllipseBounds
is the only non-polygonal boundary and requires a custom implementation. This is not yet done and the current version only works for tolerance based checks..clone()
method seems to be unused. With the switch to a pure SurfaceBounds
interface it probably is not required since a concrete bounds type should always be used during construction time.Fixes ACTS-266.