Skip to content

Commit 7e951ef

Browse files
committed
update
1 parent 3de7b02 commit 7e951ef

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

src/geode/geometry/position.cpp

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#include <geode/geometry/basic_objects/segment.hpp>
3131
#include <geode/geometry/basic_objects/tetrahedron.hpp>
3232
#include <geode/geometry/basic_objects/triangle.hpp>
33+
#include <geode/geometry/bounding_box.hpp>
3334
#include <geode/geometry/distance.hpp>
3435
#include <geode/geometry/internal/position_from_sides.hpp>
3536
#include <geode/geometry/internal/predicates.hpp>
@@ -67,6 +68,25 @@ namespace geode
6768
internal::side( dot0 ), internal::opposite_side( dot1 ) );
6869
}
6970

71+
POSITION point_segment_position_exact(
72+
const Point1D& point, const Segment1D& segment )
73+
{
74+
const auto& vertices = segment.vertices();
75+
if( point == vertices[0] )
76+
{
77+
return POSITION::vertex0;
78+
}
79+
if( point == vertices[1] )
80+
{
81+
return POSITION::vertex1;
82+
}
83+
if( segment.bounding_box().contains( point ) )
84+
{
85+
return POSITION::inside;
86+
}
87+
return POSITION::outside;
88+
}
89+
7090
template < index_t dimension >
7191
POSITION point_triangle_position_all_zero(
7292
const Point< dimension >& point, const Triangle< dimension >& triangle )
@@ -305,9 +325,10 @@ namespace geode
305325
return GEO::PCK::aligned_3d( point0, point1, point2 );
306326
}
307327

328+
template POSITION opengeode_geometry_api point_segment_position(
329+
const Point1D&, const Segment1D& );
308330
template POSITION opengeode_geometry_api point_segment_position(
309331
const Point2D&, const Segment2D& );
310-
311332
template POSITION opengeode_geometry_api point_segment_position(
312333
const Point3D&, const Segment3D& );
313334
} // namespace geode

0 commit comments

Comments
 (0)