Rewrite point-segment distance

This commit is contained in:
Nikita Lisitsa 2020-11-05 16:50:25 +03:00
parent 76dd07c266
commit 621fac8451

View file

@ -48,10 +48,13 @@ namespace psemek::geom
{ {
T const t = dot(p - s[0], s[1] - s[0]) / length_sqr(s[1] - s[0]); T const t = dot(p - s[0], s[1] - s[0]) / length_sqr(s[1] - s[0]);
if (t >= 0 && t <= 1) if (t <= 0)
return distance(p, s[0]);
else if (t >= 1)
return distance(p, s[1]);
else
return distance(p, lerp(s[0], s[1], t)); return distance(p, lerp(s[0], s[1], t));
return std::min(distance(p, s[0]), distance(p, s[1]));
} }
} }