CBlobGetXYInside Class Reference

Classe per calcular si un punt cau dins del blob Class to calculate whether a point is inside a blob. More...

#include <Blob.h>

Inheritance diagram for CBlobGetXYInside:
COperadorBlob

Public Member Functions

 CBlobGetXYInside ()
 Constructor est�dard Standard constructor.
 CBlobGetXYInside (CvPoint p)
 Constructor: indiquem el punt Constructor: sets the point.
double operator() (const CBlob &blob) const
 
  • FUNCI� BlobGetXYInside
  • FUNCIONALITAT: Calcula si un punt cau dins de la capsa rectangular del blob
  • RESULTAT:
    • retorna 1 si hi est� 0 si no
  • RESTRICCIONS:
  • AUTOR: Francesc Pinyol Margalef
  • DATA DE CREACI� 16-01-2006.

const char * GetNom () const
 Obt�el nom de l'operador.
 operator COperadorBlob * () const

Detailed Description

Classe per calcular si un punt cau dins del blob Class to calculate whether a point is inside a blob.

Definition at line 778 of file Blob.h.


Member Function Documentation

double CBlobGetXYInside::operator() ( const CBlob blob  )  const [virtual]

  • FUNCI� BlobGetXYInside
  • FUNCIONALITAT: Calcula si un punt cau dins de la capsa rectangular del blob
  • RESULTAT:
    • retorna 1 si hi est� 0 si no
  • RESTRICCIONS:
  • AUTOR: Francesc Pinyol Margalef
  • DATA DE CREACI� 16-01-2006.

  • MODIFICACI� Data. Autor. Descripci�
  • FUNCTION: BlobGetXYInside
  • FUNCTIONALITY: Calculates whether a point is inside the rectangular bounding box of a blob
  • PARAMETERS:
  • RESULT:
    • returns 1 if it is inside; o if not
  • RESTRICTIONS:
  • AUTHOR: Francesc Pinyol Margalef
  • CREATION DATE: 16-01-2006.
  • MODIFICATION: Date. Author. Description.

Implements COperadorBlob.

Definition at line 977 of file Blob.cpp.

00978 {
00979         if( blob.Edges() == NULL || blob.Edges()->total == 0 ) return 0.0;
00980         
00981         // passem els punts del blob a un vector de punts de les STL
00982         CvSeqReader reader;
00983         CBlob::vectorPunts vectorEdges;
00984         CBlob::vectorPunts::iterator itEdges, itEdgesSeguent;
00985         CvPoint edgeactual;
00986         bool dinsBlob;
00987         
00988         // agafem tots els punts amb la mateixa y que l'actual
00989         cvStartReadSeq( blob.Edges(), &reader);
00990         
00991         for( int i=0; i< blob.Edges()->total; i++)
00992         {
00993                 CV_READ_SEQ_ELEM( edgeactual ,reader );
00994                 if( edgeactual.y == m_p.y )
00995                         vectorEdges.push_back( edgeactual );
00996         }
00997 
00998         if( vectorEdges.size() == 0 ) return 0.0;
00999 
01000         // ordenem el vector per les Y's i les X's d'esquerra a dreta
01001         std::sort( vectorEdges.begin(), vectorEdges.end(), CBlob::comparaCvPoint() );
01002 
01003         // recorrem el punts del blob de la mateixa fila que el punt d'entrada
01004         // i mirem si la X del punt d'entrada est�entre dos coordenades "plenes"
01005         // del blob
01006         itEdges = vectorEdges.begin();
01007         itEdgesSeguent = vectorEdges.begin() + 1;
01008         dinsBlob = true;
01009 
01010         while( itEdges != (vectorEdges.end() - 1) )
01011         {
01012                 if( (*itEdges).x <= m_p.x && (*itEdgesSeguent).x >= m_p.x && dinsBlob )
01013                 {
01014                         vectorEdges.clear();
01015                         return 1.0;
01016                 }
01017 
01018                 itEdges++;
01019                 itEdgesSeguent++;
01020                 dinsBlob = !dinsBlob;
01021         }
01022 
01023         vectorEdges.clear();
01024         return 0.0;
01025 }


The documentation for this class was generated from the following files:
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Friends Defines

Generated on Tue Feb 9 05:29:58 2010 for iCub by  doxygen 1.6.1