115template <
typename T>
inline
116const typename Parallelogram3D<T>::TVector&
117Parallelogram3D<T>::sizeV()
const
124template <
typename T>
inline
125typename Parallelogram3D<T>::TVector&
126Parallelogram3D<T>::sizeV()
134const typename Parallelogram3D<T>::TPlane
135Parallelogram3D<T>::plane()
const
137 return TPlane(cross(sizeU_, sizeV_), support_);
146const typename Parallelogram3D<T>::TValue
149 return cross(sizeU_, sizeV_).squaredNorm();
157const typename Parallelogram3D<T>::TValue
168const typename Parallelogram3D<T>::TValue
171 return 2 * (sizeU_.norm() + sizeV_.norm());
177const typename Parallelogram3D<T>::TPoint
178Parallelogram3D<T>::point(TParam u, TParam v)
const
180 return support_ + u * sizeU_ + v * sizeV_;
185template <
typename T>
inline
186const typename Parallelogram3D<T>::TPoint
187Parallelogram3D<T>::point(
const TUV& uv)
const
189 return point(uv.x, uv.y);
195const typename Parallelogram3D<T>::TUV
196Parallelogram3D<T>::uv(
const TPoint& point)
const
201 const TVector relative = point - support_;
202 return TUV(dot(relative, reciprocalU), dot(relative, reciprocalV));
267std::ostream& operator<<(std::ostream& stream,
const Parallelogram3D<T>& parallelogram)