Class: cFiltro

 cObjeto ----+
                                  |
                         cObjetoPersistente ----+
                                                |
                                             cFiltro

Description:
Es una clase abstracta que representa un filtro que recibe una lista de objetos y devuelve otra filtrada.

Unit:
Filtro (Filtro.pas)

Constructors:

constructor create( observador: cObjetoVolador; angulo: tAngulo = PI/4; maximo: tLongitud = 5000; minimo: tLongitud = -1 );
Constructor

Methods:

procedure mDesSerializar( str: string ); override;
Recrea el objeto a partir de una cadena de texto con el objeto serializado.
function mFiltrar( l: TList ): TList;
Procesa una lista de objetos, devolviendo solo los visibles en una lista ordenada ascendentemente por la distancia (es decir, el objeto más cercano está primero en la lista).
function mGetCosApertura: tAngulo;
Obtiene el coseno de la apertura
function mGetDebugInfo( debugLevel: tDebugInfo = DI_MINI ): string; override;
Método heredado que devuelve un string con el estado del Objeto. Se utiliza para depurar y la información entregada depende del parámetro tDebugInfo.
function mGetObservador: cObjetoVolador;
Obtiene un puntero al observador
function mGetRadioMaximo: tLongitud;
Obtiene el radio máximo
function mGetRadioMinimo: tLongitud;
Obtiene el radio mínimo
function mSerializar: string; override;
Devuelve una cadena de texto con el objeto serializado.
procedure mSetObservador( ov: cObjetoVolador );
Establece el observador con un nuevo puntero
function mVisible( ov: cObjetoVolador ): boolean; virtual; abstract;
Verifica que un objeto volador pueda ser visto por la cámara

constructor create( observador: cObjetoVolador; angulo: tAngulo = PI/4; maximo: tLongitud = 5000; minimo: tLongitud = -1 );

Contructor
Parameters
   observador : Objeto Volador en el que estará montado el filtro (obligatorio)
   angulo : Angulo de apertura (visión) del filtro (default = pi/4)
   maximo : Distancia máxima en la que se considera visible a un objeto (default = 5000)
   minimo : Distancia mínima en la que se considera visible a un objeto (default = -1). Si se especifica un valor negativo o cero, se toma la dimension del objeto volador


procedure mDesSerializar( str: string ); override;

Recrea el objeto a partir de una cadena de texto con el objeto serializado.
Parameters
   str : Cadena de texto con el objeto serializado.


function mFiltrar( l: TList ): TList;

Filtra una lista de objetos, devolviendo solo los visibles. @return Lista con los objetos visibles.
Parameters
   l : Lista con los objetos a procesar.


function mGetCosApertura: tAngulo;

Returns
   Coseno de la apertura


function mGetDebugInfo( debugLevel: tDebugInfo = DI_MINI ): string; override;

Devuelve el estado del objeto basandose en la cantidad de datos requeridos:
Siempre devuelve los valores de las componentes x, y, z y si debugLevel es mayor que DI_NORMAL, también muestra el módulo. @return Cadena de texto con el estado del Objeto.
Parameters
   debugLevel : Cantidad de información requerida


function mGetObservador: cObjetoVolador;

Returns
   Puntero al obervador


function mGetRadioMaximo: tLongitud;

Returns
   Radio máximo


function mGetRadioMinimo: tLongitud;

Returns
   Radio mínimo


function mSerializar: string; override;

Returns
   Cadena de texto con el objeto serializado.


procedure mSetObservador( ov: cObjetoVolador );

Establece el observador con un nuevo puntero
Parameters
   Puntero : al nuevo obervador


function mVisible( ov: cObjetoVolador ): boolean; virtual; abstract;

Verifica que un objeto volador pueda ser visto por la cámara