30 #define __Fms_Point_H 1
32 #include <boost/numeric/ublas/storage.hpp>
39 template<
typename T, u
int16_type Dim>
41 :
public boost::numeric::ublas::bounded_array<T, Dim>
45 static const uint16_type dim = Dim;
46 typedef boost::numeric::ublas::bounded_array<T, Dim> super;
48 : super( dim, value_type(0.0) ) {}
49 FmsPoint( FmsPoint
const& init )
52 FmsPoint<T, Dim>&
operator=( FmsPoint<T, Dim> r )
54 ((super*)
this)->operator=( (super)r );
57 void operator+=( FmsPoint<T, Dim>
const& s )
59 for (uint16_type i=0; i<dim; ++i)
60 this->
operator[]( i ) += s[i];
62 void operator-=( FmsPoint<T, Dim>
const& s )
64 for (uint16_type i=0; i<dim; ++i)
65 this->
operator[]( i ) -= s[i];
67 void operator*=( value_type f )
69 for (uint16_type i=0; i<dim; ++i)
70 this->
operator[]( i ) *= f;
74 template<
typename T, u
int16_type Dim>
75 FmsPoint<T, Dim> operator-( FmsPoint<T, Dim>
const& m,
76 FmsPoint<T, Dim>
const& s )
78 FmsPoint<T, Dim> d(m);
83 template<
typename T, u
int16_type Dim>
84 T dot( FmsPoint<T, Dim>
const& a,
85 FmsPoint<T, Dim>
const& b )
88 for (uint16_type i=0; i<Dim; ++i)
93 template<
typename T, u
int16_type Dim>
94 FmsPoint<T, Dim> operator*( FmsPoint<T, Dim>
const& a, T f )
96 FmsPoint<T, Dim> retval( a );
101 template<
typename T, u
int16_type Dim>
102 FmsPoint<T, Dim> operator*( T f, FmsPoint<T, Dim>
const& a )
104 FmsPoint<T, Dim> retval( a );
109 template<
typename T, u
int16_type Dim>
110 T norm( FmsPoint<T, Dim>
const& a )
113 return std::sqrt( norm2 );
Elements & operator=(Elements const &e)
Definition: elements.hpp:335