Line(const VectorT& base, const VectorT& direction) : direction(direction), base(base) { assert(impl::AlmostEqual(direction.Length(), T(1))); }
Hyperplane(const VectorT& base, const VectorT& normal) : normal(normal) { assert(impl::AlmostEqual(normal.Length(), T(1))); scalar = VectorT::Dot(normal, base); }
Hyperplane(const VectorT& normal, T scalar) : normal(normal), scalar(scalar) { assert(impl::AlmostEqual(normal.Length(), T(1))); }