14 using T =
typename V::ValueType;
18 constexpr Line() noexcept = default;
19 constexpr
Line( const V &
p, const V &
d ) noexcept :
p(
p ),
d(
d ) { }
21 constexpr explicit Line(
const Line<U> & l ) noexcept :
p( l.p ),
d( l.d ) { }
28 {
return ( x -
project( x ) ).lengthSq(); }
38 [[nodiscard]] V
project(
const V & x )
const {
return p + dot(
d, x -
p ) /
d.lengthSq() *
d; }
42 return s << l.
p <<
'\n' << l.
d;
47 return s >> l.
p >> l.
d;
66 return a.
p == b.
p && a.
d == b.
d;
MRMESH_API bool operator==(const BitSet &a, const BitSet &b)
compare that two bit sets have the same set bits (they can be equal even if sizes are distinct but la...
Definition MRCameraOrientationPlugin.h:8
Definition MRMesh/MRAffineXf.h:23
M A
Definition MRMesh/MRAffineXf.h:27
friend std::istream & operator>>(std::istream &s, Line &l)
Definition MRLine.h:45
typename V::ValueType T
Definition MRLine.h:14
const Line & operator+() const
returns same representation
Definition MRLine.h:33
T distanceSq(const V &x) const
returns squared distance from given point to this line
Definition MRLine.h:27
constexpr Line(const Line< U > &l) noexcept
Definition MRLine.h:21
Line operator-() const
returns same line represented with flipped direction of d-vector
Definition MRLine.h:31
constexpr Line() noexcept=default
friend std::ostream & operator<<(std::ostream &s, const Line &l)
Definition MRLine.h:40
V operator()(T param) const
returns point on the line, where param=0 returns p and param=1 returns p+d
Definition MRLine.h:24
V d
Definition MRLine.h:16
Line< V > transformed(const Line< V > &l, const AffineXf< V > &xf)
Definition MRLine.h:58
Line normalized() const
returns same line represented with unit d-vector
Definition MRLine.h:35
V p
Definition MRLine.h:16
V project(const V &x) const
finds the closest point on line
Definition MRLine.h:38