Celeritas 0.6.0-129+develop.846910afa
|
An axis-aligned ellipsoid centered at the origin. More...
#include <IntersectRegion.hh>
Public Member Functions | |
Ellipsoid (Real3 const &radii) | |
Construct with radius along each Cartesian axis. | |
void | build (IntersectSurfaceBuilder &) const final |
Build surfaces. | |
void | output (JsonPimpl *) const final |
Write output to the given JSON object. | |
bool | encloses (Ellipsoid const &other) const |
Whether this encloses another ellipsoid. | |
Real3 const & | radii () const |
Radius along each axis. | |
real_type | radius (Axis ax) const |
Get the radius along a single axis. | |
Additional Inherited Members | |
![]() | |
CELER_DEFAULT_COPY_MOVE (IntersectRegionInterface) | |
An axis-aligned ellipsoid centered at the origin.
The ellipsoid is constructed with the three radial lengths. For a length scale L , the quadric it creates has second-order terms that are \( O(1) \) and a zeroth order term that's \( O(L^2) \). Translations on that length scale will preserve the accuracy of the quadratic solution.
There are many scalings of the quadric equation that produce unitary second-order terms if the ellipsoid's radii are identical:
\[ \frac{k}{r_x^2} x^2 + \frac{k}{r_y^2} y^2 + \frac{k}{r_z^2} z^2 = k \]
but we make the ad hoc decision to choose \( k = \min r_i \max r_i \) to avoid irrational normalization constants, which makes unit tests and output easier to read.
|
finalvirtual |
Build surfaces.
Implements celeritas::orangeinp::IntersectRegionInterface.
Write output to the given JSON object.
Implements celeritas::orangeinp::IntersectRegionInterface.