| 205 | } |
| 206 | |
| 207 | std::optional<SignedDistanceToMeshResult> findSignedDistance( const Vector3f & pt, const MeshPart & mp, |
| 208 | float upDistLimitSq, float loDistLimitSq ) |
| 209 | { |
| 210 | auto projRes = findProjection( pt, mp, upDistLimitSq, nullptr, loDistLimitSq ); |
| 211 | std::optional<SignedDistanceToMeshResult> res; |
| 212 | if ( !( projRes.distSq < upDistLimitSq ) || projRes.distSq < loDistLimitSq ) |
| 213 | { |
| 214 | return res; |
| 215 | } |
| 216 | res = SignedDistanceToMeshResult(); |
| 217 | res->proj = projRes.proj; |
| 218 | res->mtp = projRes.mtp; |
| 219 | res->dist = mp.mesh.signedDistance( pt, projRes, mp.region ); |
| 220 | return res; |
| 221 | } |
| 222 | |
| 223 | } //namespace MR |