15 #ifndef ECL_GEOMETRY_HOMOGENEOUS_POINT_HPP_ 16 #define ECL_GEOMETRY_HOMOGENEOUS_POINT_HPP_ 45 template <
typename T,
typename Enable =
void>
58 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
63 elements.template block<3,1>(0,0) = ecl::linear_algebra::Matrix<T,3,1>::Constant(value);
75 elements.template block<3,1>(0,0) = vec;
96 elements << x_i, y_i, z_i, 1.0;
117 ecl::linear_algebra::CommaInitializer< ecl::linear_algebra::Matrix<T,4,1> >
operator<<(
const T &value) {
118 return elements.operator<<(value);
137 const ecl::linear_algebra::Matrix<T,4,1>&
positionVector()
const {
return elements; }
144 const T&
x()
const {
return elements[0]; }
150 const T&
y()
const {
return elements[1]; }
156 const T&
z()
const {
return elements[2]; }
162 T
x() {
return elements[0]; }
168 T
y() {
return elements[1]; }
174 T
z() {
return elements[2]; }
176 void x(
const T& value) { elements[0] = value; }
177 void y(
const T& value) { elements[1] = value; }
178 void z(
const T& value) { elements[2] = value; }
180 template <
typename OutputStream,
typename Type>
181 friend OutputStream& operator<<(OutputStream &ostream , const HomogeneousPoint<Type> &point);
200 template <
typename OutputStream,
typename Type>
201 OutputStream& operator<<(OutputStream &ostream , const HomogeneousPoint<Type> &point) {
202 ostream <<
"[ " << point.x() <<
" " << point.y() <<
" " << point.z() <<
" ]";
T z()
Returns a copy of the z co-ordinate.
EIGEN_MAKE_ALIGNED_OPERATOR_NEW HomogeneousPoint(const T &value=T())
Default constructor - sets all elements to the same value.
void y(const T &value)
Sets the y-coordinate.
ecl::linear_algebra::Matrix< T, 4, 1 > & positionVector()
Representation of the position vector in eigen vector format.
HomogeneousPoint(const ecl::linear_algebra::Matrix< T, 3, 1 > &vec)
Initialises with the specified eigen style vector.
OutputStream & operator<<(OutputStream &ostream, const Array< ElementType, ArraySize > &array)
Embedded control libraries.
virtual ~HomogeneousPoint()
const T & y() const
Returns a constant reference to the y co-ordinate.
T y()
Returns a copy of the y co-ordinate.
HomogeneousPoint< double > HomogeneousPointd
Eigen style convenience handle for homogeneous points in double format.
HomogeneousPoint< float > HomogeneousPointf
Eigen style convenience handle for homogeneous points in float format.
#define ecl_assert_throw(expression, exception)
T x()
Returns a copy of the x co-ordinate.
const T & z() const
Returns a constant reference to the z co-ordinate.
void x(const T &value)
Sets the x-coordinate.
const T & x() const
Returns a constant reference to the x co-ordinate.
void z(const T &value)
Sets the z-coordinate.
const ecl::linear_algebra::Matrix< T, 4, 1 > & positionVector() const
Representation of the position vector in const eigen vector format.
Dummy parent class for Homogenous points.
HomogeneousPoint(const ecl::linear_algebra::Matrix< T, 4, 1 > &vec)
Initialises with the specified eigen style vector in homogeneous format.
HomogeneousPoint(const T &x_i, const T &y_i, const T &z_i)
Initialises the point with the specified values.
ecl::linear_algebra::Matrix< T, 4, 1 > elements