d-dimensional physical point or vector
Description
The point
defines a vertex or vector in the physical d-dimensional space, d=1,2,3. It is represented as an array of coordinates. The coordinate index starts at zero and finishes at d-1
, e.g. x[0]
, x[1]
and x[2]
.
The default constructor set all components to zero:
point x;
and this default could be overridden:
point x (1, 2, 3.14);
or alternatively:
point x = {1, 2, 3.14};
The standard linear algebra for vectors is supported by the point
class.
Implementation
This documentation has been generated from file fem/geo_element/point.h
The point
class is simply an alias to the point_basic
class
typedef point_basic<Float>
point;
see the point page for the full documentation
The point_basic
class is a template class with the floating type as parameter:
template <class T>
class point_basic {
public:
template <class T1>
point_basic<T>(
const point_basic<T1>&
p);
template <class T1>
point_basic<T>&
operator= (
const point_basic<T1>&
p);
point_basic<T>
operator+ (
const point_basic<T>& v)
const;
point_basic<T>
operator- (
const point_basic<T>& v)
const;
point_basic<T>&
operator+= (
const point_basic<T>& v);
point_basic<T>&
operator-= (
const point_basic<T>& v);
template <class U>
typename
std::enable_if<
details::is_rheolef_arithmetic<U>::value
,point_basic<T>
>::type
point_basic<T>
operator/ (point_basic<T> v)
const;
std::istream&
get (std::istream& s,
int d = 3);
std::ostream&
put (std::ostream& s,
int d = 3)
const;
point_basic< T > operator-() const
std::istream & get(std::istream &s, int d=3)
bool operator==(const point_basic< T > &v) const
T & operator()(int i_coord)
point_basic< T > & operator+=(const point_basic< T > &v)
point_basic< T > operator+(const point_basic< T > &v) const
std::ostream & put(std::ostream &s, int d=3) const
bool operator!=(const point_basic< T > &v) const
point_basic< T > operator/(const T &a) const
point_basic< T > & operator=(const point_basic< T1 > &p)
std::enable_if< details::is_rheolef_arithmetic< U >::value, point_basic< T > >::type operator*(const U &a) const
point_basic< T > & operator*=(const T &a)
point_basic< T > & operator/=(const T &a)
T & operator[](int i_coord)
point_basic< T > & operator-=(const point_basic< T > &v)
These linear and nonlinear functions are completed by some usual functions:
template<class T>
std::istream&
operator >> (std::istream& s, point_basic<T>&
p);
template<class T>
std::ostream&
operator << (std::ostream& s,
const point_basic<T>&
p);
template <class T, class U>
typename
std::enable_if<
details::is_rheolef_arithmetic<U>::value
,point_basic<T>
>::type
template<class T>
point_basic<T>
vect (
const point_basic<T>& v,
const point_basic<T>& w);
template<class T>
T dot (
const point_basic<T>& x,
const point_basic<T>& y);
template<class T>
T norm2 (
const point_basic<T>& x);
template<class T>
T norm (
const point_basic<T>& x);
template<class T>
T dist2 (
const point_basic<T>& x,
const point_basic<T>& y);
template<class T>
T dist (
const point_basic<T>& x,
const point_basic<T>& y);
template<class T>
T dist_infty (
const point_basic<T>& x,
const point_basic<T>& y);
template <class T>
T vect2d (
const point_basic<T>& v,
const point_basic<T>& w);
template <class T>
T mixt (
const point_basic<T>&
u,
const point_basic<T>& v,
const point_basic<T>& w);
template <class T>
const point_basic<T>& a,
const point_basic<T>& b,
const point_basic<T>& c);
template <class T>
const point_basic<T>& a,
const point_basic<T>& b,
const point_basic<T>& c,
const point_basic<T>&
d);
template <class T>
const point_basic<T>& a,
const point_basic<T>& b,
const point_basic<T>& c);
template <class T>
const point_basic<T>& a,
const point_basic<T>& b,
const point_basic<T>& c,
const point_basic<T>&
d);
template <class T>
std::string
ptos (
const point_basic<T>& x,
int d = 3);
template<class T, size_t d>
bool lexicographically_less(const point_basic< T > &a, const point_basic< T > &b)
T orient2d(const point_basic< T > &a, const point_basic< T > &b, const point_basic< T > &c)
std::ostream & operator<<(std::ostream &os, const catchmark &m)
point_basic< T > vect(const point_basic< T > &v, const point_basic< T > &w)
T norm2(const vec< T, M > &x)
norm2(x): see the expression page for the full documentation
T dist_infty(const point_basic< T > &x, const point_basic< T > &y)
T orient3d(const point_basic< T > &a, const point_basic< T > &b, const point_basic< T > &c, const point_basic< T > &d)
int sign_orient2d(const point_basic< T > &a, const point_basic< T > &b, const point_basic< T > &c)
int sign_orient3d(const point_basic< T > &a, const point_basic< T > &b, const point_basic< T > &c, const point_basic< T > &d)
T mixt(const point_basic< T > &u, const point_basic< T > &v, const point_basic< T > &w)
rheolef::std enable_if ::type dot const Expr1 expr1, const Expr2 expr2 dot(const Expr1 &expr1, const Expr2 &expr2)
T dist2(const point_basic< T > &x, const point_basic< T > &y)
std::string ptos(const point_basic< T > &x, int d=3)
std::istream & operator>>(std::istream &is, const catchmark &m)
T vect2d(const point_basic< T > &v, const point_basic< T > &w)
T dist(const point_basic< T > &x, const point_basic< T > &y)
csr< T, sequential > operator*(const T &lambda, const csr< T, sequential > &a)
T norm(const vec< T, M > &x)
norm(x): see the expression page for the full documentation