MCPcopy Create free account
hub / github.com/Geode-solutions/OpenGeode / segment_quick_skip

Function segment_quick_skip

src/geode/geometry/bounding_box.cpp:88–107  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

86
87 template < geode::index_t dimension >
88 bool segment_quick_skip( const geode::BoundingBox< dimension >& box,
89 const geode::Segment< dimension >& segment )
90 {
91 const auto box_extent = box.diagonal() / 2.;
92 const auto segment_origin = segment.barycenter() - box.center();
93 const auto segment_extent = segment.length() / 2.;
94 const auto segment_direction = segment.normalized_direction();
95 for( const auto i : geode::LRange{ dimension } )
96 {
97 const auto lhs = std::fabs( segment_origin.value( i ) );
98 const auto rhs =
99 box_extent.value( i )
100 + segment_extent * std::fabs( segment_direction.value( i ) );
101 if( lhs - rhs > geode::GLOBAL_EPSILON )
102 {
103 return true;
104 }
105 }
106 return false;
107 }
108
109 template < geode::index_t dimension >
110 bool line_epsilon_intersects( const geode::BoundingBox< dimension >& box,

Callers 2

intersectsMethod · 0.85
epsilon_intersectsMethod · 0.85

Calls 6

diagonalMethod · 0.80
centerMethod · 0.80
normalized_directionMethod · 0.80
barycenterMethod · 0.45
lengthMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected