next up previous contents
Next: Listas Up: STL Previous: Características   Índice General

Puntos y Vectores

STL no da soporte para objetos geométricos, por eso, tenemos que implementar las clases que representan puntos o vectores y que contengan los métodos apropriados para trabajar con ellos.

Por ejemplo en siguiente trozo de código implementa un punto d3_point que simula el comportamiento de un punto tridimensional de Leda tal como lo usamos en el fichero IGPoint.h. El código se usa solamente si la variable HAVE_LEDA no está definida durante la compilación (en el otro caso se ve que se incluye el punto d3_point de Leda).

#if defined(HAVE_LEDA)
#include <LEDA/d3_point.h>
#else
class d3_point {
protected:
  double x,y,z;
public:
  d3_point(
  ) :
    x(0.0),
    y(0.0),
    z(0.0)
  {
  }
  d3_point(
    double x_,
    double y_,
    double z_
  ) :
    x(x_),
    y(y_),
    z(z_)
  {
  }
  d3_point(
    const d3_point& p
  ) :
    x(p.x),
    y(p.y),
    z(p.z)
  {
  }
  d3_point& operator=(
    const d3_point& P
  ) {
    x=P.x;
    y=P.y;
    z=P.z;
    return *this;
  }
  d3_point operator*(
    double d
  ) const {
    return d3_point(x*d,y*d,z*d);
  }
  d3_point operator+(
    const d3_point& P
  ) const {
    return d3_point(x+P.x,y+P.y,z+P.z);
  }
  const d3_point& to_vector(void) const { return *this; }
  double xcoord(void) const { return x; }
  double ycoord(void) const { return y; }
  double zcoord(void) const { return z; }
};
#endif



© 2004, Dr. Arno Formella & Dra. Mª Victoria Luzón García, Universidad de Vigo, Departamento de Informática