ellipsoid.hpp
Go to the documentation of this file.
1 // Copyright (c) 2015-2018, CNRS
2 // Authors: Justin Carpentier <jcarpent@laas.fr>
3 
4 #ifndef __multicontact_api_geometry_ellipsoid_hpp__
5 #define __multicontact_api_geometry_ellipsoid_hpp__
6 
7 #include <Eigen/Dense>
8 #include <iostream>
9 
11 
12 namespace multicontact_api {
13 namespace geometry {
14 template <typename _Scalar, int _dim, int _Options>
15 struct Ellipsoid {
16  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
17  typedef _Scalar Scalar;
18  enum { dim = _dim };
19  enum { Options = _Options };
20 
21  typedef Eigen::Matrix<Scalar, dim, dim, Options> Matrix;
22  typedef Eigen::Matrix<Scalar, dim, 1, Options> Vector;
23 
24  Ellipsoid(const Matrix& A, const Vector& center) : m_A(A), m_center(center) {}
25 
26  Scalar lhsValue(const Vector& point) const {
27  return (m_A * (point - m_center)).norm();
28  }
29 
30  const Matrix& A() const { return m_A; }
31  Matrix& A() { return m_A; }
32  const Vector& center() const { return m_center; }
33  Vector& center() { return m_center; }
34 
35  void disp(std::ostream& os) const {
36  os << "A:\n"
37  << m_A << std::endl
38  << "center: " << m_center.transpose() << std::endl;
39  }
40 
41  friend std::ostream& operator<<(std::ostream& os, const Ellipsoid& E) {
42  E.disp(os);
43  return os;
44  }
45 
46  protected:
49 
52 };
53 } // namespace geometry
54 } // namespace multicontact_api
55 
56 #endif // ifndef __multicontact_api_geometry_ellipsoid_hpp__
Vector & center()
Definition: ellipsoid.hpp:33
Ellipsoid(const Matrix &A, const Vector &center)
Definition: ellipsoid.hpp:24
Eigen::Matrix< Scalar, dim, dim, Options > Matrix
Definition: ellipsoid.hpp:21
Definition: ellipsoid.hpp:15
Definition: ellipsoid.hpp:12
void disp(std::ostream &os) const
Definition: ellipsoid.hpp:35
Eigen::Matrix< Scalar, dim, 1, Options > Vector
Definition: ellipsoid.hpp:22
Matrix & A()
Definition: ellipsoid.hpp:31
const Matrix & A() const
Definition: ellipsoid.hpp:30
friend std::ostream & operator<<(std::ostream &os, const Ellipsoid &E)
Definition: ellipsoid.hpp:41
Matrix m_A
Definition: ellipsoid.hpp:48
Scalar lhsValue(const Vector &point) const
Definition: ellipsoid.hpp:26
Definition: ellipsoid.hpp:18
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar
Definition: ellipsoid.hpp:17
Vector m_center
Center of the ellipsoid expressed in the global frame.
Definition: ellipsoid.hpp:51
const Vector & center() const
Definition: ellipsoid.hpp:32