Add distance(point,segment)
This commit is contained in:
parent
4de7d345a3
commit
42561ccadb
1 changed files with 11 additions and 0 deletions
|
|
@ -43,4 +43,15 @@ namespace psemek::geom
|
|||
return os << ')';
|
||||
}
|
||||
|
||||
template <typename T, std::size_t N>
|
||||
T distance(point<T, N> const & p, segment<point<T, N>> const & s)
|
||||
{
|
||||
T const t = dot(p - s[0], s[1] - s[0]) / length_sqr(s[1] - s[0]);
|
||||
|
||||
if (t >= 0 && t <= 1)
|
||||
return distance(p, lerp(s[0], s[1], t));
|
||||
|
||||
return std::min(distance(p, s[0]), distance(p, s[1]));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue