CLAW Library (a C++ Library Absolutely Wonderful) 1.5.5
Public Types | Public Member Functions
claw::math::vector_2d< T > Class Template Reference

Two dimensional vector. More...

#include <vector_2d.hpp>

Inheritance diagram for claw::math::vector_2d< T >:
claw::math::coordinate_2d< T >

List of all members.

Public Types

typedef T value_type
 The type of the values we store.
typedef vector_2d< value_typeself_type
 The type of the current class.
typedef coordinate_2d< value_typesuper
 The type of the parent class.

Public Member Functions

 vector_2d ()
 Constructor.
template<class U >
 vector_2d (const coordinate_2d< U > &that)
 Copy constructor.
template<class U >
 vector_2d (const coordinate_2d< U > &p1, const coordinate_2d< U > &p2)
 Construct a vector from two points.
 vector_2d (const value_type &_x, const value_type &_y)
 Constructor with initialization.
value_type length () const
 Gets vector length.
void normalize ()
 Normalize the vector.
self_type get_orthonormal_clockwise () const
 Get a vector orthonormal to this vector.
self_type get_orthonormal_anticlockwise () const
 Get a vector orthonormal to this vector.
value_type dot_product (const self_type &vect) const
 Dot product.

Detailed Description

template<class T>
class claw::math::vector_2d< T >

Two dimensional vector.

Author:
Julien Jorge

Definition at line 44 of file vector_2d.hpp.


Member Typedef Documentation

template<class T>
typedef vector_2d<value_type> claw::math::vector_2d< T >::self_type

The type of the current class.

Reimplemented from claw::math::coordinate_2d< T >.

Definition at line 52 of file vector_2d.hpp.

template<class T>
typedef coordinate_2d<value_type> claw::math::vector_2d< T >::super

The type of the parent class.

Definition at line 55 of file vector_2d.hpp.

template<class T>
typedef T claw::math::vector_2d< T >::value_type

The type of the values we store.

Reimplemented from claw::math::coordinate_2d< T >.

Definition at line 49 of file vector_2d.hpp.


Constructor & Destructor Documentation

template<class T >
claw::math::vector_2d< T >::vector_2d ( )

Constructor.

Definition at line 37 of file vector_2d.tpp.

{

} // vector_2d::vector_2d() [constructor]
template<class T >
template<class U >
claw::math::vector_2d< T >::vector_2d ( const coordinate_2d< U > &  that)

Copy constructor.

Definition at line 48 of file vector_2d.tpp.

  : super(that)
{

} // vector_2d::vector_2d() [copy constructor]
template<class T >
template<class U >
claw::math::vector_2d< T >::vector_2d ( const coordinate_2d< U > &  p1,
const coordinate_2d< U > &  p2 
)

Construct a vector from two points.

Definition at line 61 of file vector_2d.tpp.

  : super( p2.x - p1.x, p2.y - p1.y )
{

} // vector_2d::vector_2d() [constructor from two points]
template<class T >
claw::math::vector_2d< T >::vector_2d ( const value_type _x,
const value_type _y 
)

Constructor with initialization.

Parameters:
_xx value.
_yy Value.

Definition at line 74 of file vector_2d.tpp.

  : super(_x, _y)
{

} // vector_2d::vector_2d() [constructor whit values]

Member Function Documentation

template<class T >
claw::math::vector_2d< T >::value_type claw::math::vector_2d< T >::dot_product ( const self_type that) const

Dot product.

Parameters:
thatThe other operand.

Definition at line 136 of file vector_2d.tpp.

References claw::math::coordinate_2d< T >::x, and claw::math::coordinate_2d< T >::y.

{       
  return this->x * that.x + this->y * that.y;
} // vector_2d::dot_product()
template<class T >
claw::math::vector_2d< T > claw::math::vector_2d< T >::get_orthonormal_anticlockwise ( ) const

Get a vector orthonormal to this vector.

Definition at line 124 of file vector_2d.tpp.

{
  return self_type(-this->y, this->x);
} // vector_2d::get_orthonormal_anticlockwise()
template<class T >
claw::math::vector_2d< T > claw::math::vector_2d< T >::get_orthonormal_clockwise ( ) const

Get a vector orthonormal to this vector.

Definition at line 113 of file vector_2d.tpp.

{
  return self_type(this->y, -this->x);
} // vector_2d::get_orthonormal_clockwise()
template<class T >
claw::math::vector_2d< T >::value_type claw::math::vector_2d< T >::length ( ) const

Gets vector length.

Definition at line 86 of file vector_2d.tpp.

{
  return std::sqrt( (this->x * this->x) + (this->y * this->y) ); 
} // vector_2d::length()
template<class T >
void claw::math::vector_2d< T >::normalize ( )

Normalize the vector.

Definition at line 96 of file vector_2d.tpp.

{
  value_type l = length();
  
  if (l != 0)
    {
      this->x /= l;
      this->y /= l;
    }
} // vector_2d::normalize()

The documentation for this class was generated from the following files: