EBGeometry
Compact, header-only C++ library for fast evaluation of signed distance functions
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
EBGeometry::RayDetail::OffsetFaceUnion< T > Struct Template Reference

The union of the offset faces a ray meets, as disjoint spans merged as they come, at most Capacity: an offset face that would begin a span beyond them is dropped and lowers the horizon to its entry, which is also the walk's bound, so that the boxes beyond are left out. More...

#include <EBGeometry_OffsetRayForms.hpp>

Public Member Functions

void insert (T a_in, T a_out, Vec3T< T > a_nOut) noexcept
 Take a piece.
 
void toSpans (const T a_t0, RaySpansT< T > &a_spans) const noexcept
 The union as a list over [a_t0, horizon].
 

Public Attributes

T m_in [Capacity]
 Entries.
 
T m_out [Capacity]
 Exits.
 
Vec3T< T > m_nOut [Capacity]
 Outward normals at the exits, of the piece each exit is on.
 
uint32_t m_count = 0
 How many are held.
 
T m_horizon = Math::Limits<T>::infinity()
 The union is known on [t0, m_horizon].
 

Static Public Attributes

static constexpr uint32_t Capacity = 4
 Most spans held.
 

Detailed Description

template<class T>
struct EBGeometry::RayDetail::OffsetFaceUnion< T >

The union of the offset faces a ray meets, as disjoint spans merged as they come, at most Capacity: an offset face that would begin a span beyond them is dropped and lowers the horizon to its entry, which is also the walk's bound, so that the boxes beyond are left out.

Internal helper; not part of the public API.

Template Parameters
TFloating-point precision.

Member Function Documentation

◆ insert()

template<class T >
void EBGeometry::RayDetail::OffsetFaceUnion< T >::insert ( T  a_in,
T  a_out,
Vec3T< T >  a_nOut 
)
inlinenoexcept

Take a piece.

Parameters
[in]a_inEntry.
[in]a_outExit.
[in]a_nOutOutward normal at the exit.

◆ toSpans()

template<class T >
void EBGeometry::RayDetail::OffsetFaceUnion< T >::toSpans ( const T  a_t0,
RaySpansT< T > &  a_spans 
) const
inlinenoexcept

The union as a list over [a_t0, horizon].

A span entered exactly at a_t0 keeps its crossing: a trace starting again from a horizon starts at the entry of the span it dropped there.

Parameters
[in]a_t0Start of the interval.
[out]a_spansThe list.

The documentation for this struct was generated from the following file: