Skip to content
Snippets Groups Projects
Commit 9bcc2cb2 authored by Axel Modave's avatar Axel Modave
Browse files

pp

parent 3c236ae8
No related branches found
No related tags found
No related merge requests found
......@@ -926,25 +926,16 @@ void signedDistancesPointsTriangle(std::vector<double> &distances,
void signedDistancePointLine(const SPoint3 &p1, const SPoint3 &p2, const SPoint3 &p,
double &d, SPoint3 &closePt)
{
SVector3 t1 = p2 - p1;
const double n2t1 = dot(t1, t1);
SVector3 pp1 = p - p1;
const double t12 = dot(pp1, t1) / n2t1;
d = 1.e10;
bool found = false;
if (t12 >= 0 && t12 <= 1.){
d = std::min(fabs(d), p.distance(p1 + (p2 - p1) * t12));
closePt = p1 + (p2 - p1) * t12;
found = true;
}
if (p.distance(p1) < fabs(d)){
SVector3 v12 = p2 - p1;
SVector3 v1p = p - p1;
const double alpha = dot(v1p, v12) / dot(v12, v12);
if (alpha <= 0.)
closePt = p1;
d = std::min(fabs(d), p.distance(p1));
}
if (p.distance(p2) < fabs(d)){
else if (alpha >= 1.)
closePt = p2;
d = std::min(fabs(d), p.distance(p2));
}
else
closePt = p1 + (p2 - p1) * alpha;
d = p.distance(closePt);
}
void signedDistancesPointsLine(std::vector<double> &distances,
......@@ -957,9 +948,8 @@ void signedDistancesPointsLine(std::vector<double>&distances,
distances.resize(pts.size());
closePts.clear();
closePts.resize(pts.size());
for (int i=0; i<pts.size(); i++) {
double d;
for (unsigned int i = 0; i < pts.size();i++){
SPoint3 closePt;
const SPoint3 &p = pts[i];
signedDistancePointLine(p1, p2, p, d, closePt);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment