| 111 | } |
| 112 | |
| 113 | PolylineProjectionResult3 findProjectionOnPolyline( const Vector3f& pt, const Polyline3& polyline, float upDistLimitSq, AffineXf3f* xf, float loDistLimitSq ) |
| 114 | { |
| 115 | return findProjectionCore( polyline.getAABBTree(), upDistLimitSq, xf, [&]( UndirectedEdgeId ue, Vector3f & a, Vector3f & b ) |
| 116 | { |
| 117 | a = polyline.orgPnt( ue ); |
| 118 | b = polyline.destPnt( ue ); |
| 119 | }, loDistLimitSq, |
| 120 | [pt]( const Box3f & box ) { return box.getDistanceSq( pt ); }, |
| 121 | [pt]( const LineSegm3f & ls ) { return LineSegm3f{ pt, closestPointOnLineSegm( pt, ls ) }; } ); |
| 122 | } |
| 123 | |
| 124 | PolylineProjectionResult3Arg findMaxProjectionOnPolyline( const VertCoords& points, const Polyline3& polyline, |
| 125 | const VertBitSet* pointsRegion, AffineXf3f* xf, float loDistLimitSq ) |
no test coverage detected