next up previous contents
Next: Polígonos Up: Leda Previous: Vectores

Listas

Las listas de Leda tienen (casi) todas las operaciones implementadas. Sobre todo sus iteradores son muy fáciles de usar. Existen dos tipos de ellos: iteradores sobre los contenidos e iteradores sobre los contenedores (los llamados list_item).

Ejemplo:

Si almacenamos las esquinas de un polígono tridimensional en una lista de puntos del tipo d3_point podemos dibujar dicho polígono con OpenGL así:

  list<d3_point> L;
  ...
  glBegin(GL_POLYGON);
  forall(p,L) {
    glVertex3d(p.xcoord(),p.ycoord(),p.zcoord());
  }
  glEnd();

Ejemplo:

Para calcular un área ponderada aplicando la fórmula usamos el iterador de contenedores porque necesitamos acceso al sucesor cíclico:

  list<d3_point> L;
  ...
  double    A_xy=0.0;
  if(L.size()>2) {
    list_item it,jt;
    forall_items(it,L) {
      jt   =L.cyclic_succ(it);
      A_xy+=jt.contents().xcoord()*it.contents().ycoord()-
            it.contents().xcoord()*jt.contents().ycoord();
    }
    A_xy*=0.5;
  }



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