Home | Develop | Download | Contact
Ellipse.hpp
1/*
2 * Ellipse.hpp
3 *
4 * Copyright 2018 Fernando Pujaico Rivera <fernando.pujaico.rivera@gmail.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 * MA 02110-1301, USA.
20 *
21 */
22
32#ifndef __PDS_ELLIPSE_HPP__
33#define __PDS_ELLIPSE_HPP__
34
35#include <string>
36#include <Pds/Matrix>
37#include <Pds/Vector>
38
47namespace Pds{
48
57{
58
59private:
60 /* Parámetro xc1 del centroide 1.*/
62
63 /* Parámetro xc2 del centroide 2.*/
65
66 /* Major axis.*/
67 double a;
68
69public:
70
79 Ellipse(void);
80
111 Ellipse(double a,double b,double xo1,double xo2,double angle);
112
134 Ellipse(const Pds::Vector &xc1,const Pds::Vector &xc2,double a);
135
157 Ellipse(const Pds::Point2D &xc1,const Pds::Point2D &xc2,double a);
158
186 Ellipse( double A,double B,double C,
187 double D,double E,double F);
188
196
197
199
204public:
205
226 Pds::Matrix RandPerimeter(unsigned int L) const;
227
246 Pds::Matrix RandSamples(unsigned int L) const;
251public:
252
270
271
285 double Evaluate(double x1,double x2) const;
286
287
300 double Evaluate(const Pds::Point2D &p) const;
301
306public:
307
322
339
346 double GetMajorAxis(void) const;
347
360 double GetMinorAxis(void) const;
361
374 double GetAngle(void) const;
375
386
394
402
409 double GetArea(void) const;
410
435 bool GetQuadraticForm( double &A,double &B,double &C,
436 double &D,double &E,double &F) const;
437
438
443public:
444
458 static Pds::Ellipse GetEllipse(const Pds::Matrix &X,const std::string &Type="CovEig");
459
526
531public:
532
559
570 bool Copy(const Pds::Ellipse &B);
571
577 void MakeEmpty(void);
578
583public:
584
594 bool IsEmpty(void) const;
595
596
609 bool IsInside(double x1,double x2) const;
610
611
623 bool IsInside(const Pds::Point2D &p) const;
624
629public:
630
641 void Print(std::string str="") const;
642
647public:
648
670 Pds::Json ToJson(void) const;
671
672
689 bool FromJson(const Pds::Json &J) ;
690
697}; // Class Ellipse
698
699} // namespace Pds
700
701
717 std::ostream& operator<<(std::ostream &out,const Pds::Ellipse &z);
718
719
729#endif
730
La clase tipo Pds::Ellipse . Esta clase genera un objeto con dos parámetros xc1, xc2 y a....
Definition: Ellipse.hpp:57
double a
Definition: Ellipse.hpp:67
Pds::Vector xc2
Definition: Ellipse.hpp:64
Pds::Vector xc1
Definition: Ellipse.hpp:61
La clase tipo Pds::Json . Esta clase genera una estructura capaz de almacenar datos del formato Json....
Definition: Json.hpp:63
La clase tipo Pds::Matrix . Esta clase genera una matriz de Nlin lineas y Ncol columnas....
Definition: Matrix.hpp:96
La clase tipo Pds::Point2D . Esta clase genera un objeto con dos parametros X y Y....
Definition: Point2D.hpp:59
La clase tipo Pds::Vector . Esta clase genera una matriz de Nlin lineas y 1 columna....
Definition: Vector.hpp:80
Ellipse(const Pds::Vector &xc1, const Pds::Vector &xc2, double a)
Crea un objeto de tipo Pds::Ellipse.
std::ostream & operator<<(std::ostream &out, const Pds::Ellipse &z)
Retorna el contenido del objeto por la salida estándar.
double GetMajorAxis(void) const
Retorna la distancia del eje mayor.
Ellipse(double a, double b, double xo1, double xo2, double angle)
Crea un objeto de tipo Pds::Ellipse.
Ellipse(const Pds::Ellipse &B)
Crea un objeto de tipo Pds::Ellipse copiando datos desde otro.
static Pds::Ellipse GetEllipse(const Pds::Matrix &X, const std::string &Type="CovEig")
Aproxima uma elipse a partir de muestras agrupadas en las lineas de la matriz .
Pds::Vector EvalSamples(const Pds::Matrix &X) const
Evalua cada linea de la matrix en la ecuación .
bool GetQuadraticForm(double &A, double &B, double &C, double &D, double &E, double &F) const
Retorna los parámetros de la forma cuadrática.
bool IsEmpty(void) const
Verifica si la elipse es válido.
Ellipse(double A, double B, double C, double D, double E, double F)
Crea un objeto de tipo Pds::Ellipse.
bool FromJson(const Pds::Json &J)
Lee un objeto Pds::Json busca la etiqueta "Ellipse" y lo carga. El objeto debe tener al menos los sig...
bool IsInside(double x1, double x2) const
Verifica si un elemento esta en la elipse o el perímetro.
double GetArea(void) const
Retorna el area de la elipse.
void MakeEmpty(void)
Cera los datos internos.
Pds::Matrix RandSamples(unsigned int L) const
Retorna, en las lineas de la matriz, muestras que describen el elipse interno.
Pds::Vector GetMajorVector(void) const
Retorna el vector del eje mayor.
bool Copy(const Pds::Ellipse &B)
Copia en si mismo (A), el contenido de un Shape B. Este método es similar a usar el operador = .
Pds::Vector GetCentroid(void) const
Retorna el centro de la elipse.
Ellipse(void)
Crea un objeto vacio de tipo Pds::Ellipse.
static Pds::Ellipse GetEllipseCovEigMethod(const Pds::Matrix &X)
Aproxima uma elipse a partir de muestras agrupadas en las lineas de la matriz .
void Print(std::string str="") const
Muestra en pantalla el contenido de Pds::Ellipse, elementos separados por tabulador.
Pds::Json ToJson(void) const
Retorna un objeto Pds::Json con el contenido del objeto.
double GetMinorAxis(void) const
Retorna la distancia del eje menor.
double Evaluate(const Pds::Point2D &p) const
Evalua un punto en la elipse.
Pds::Vector GetCentroid1(void) const
Retorna el centroide 1 de la elipse.
double GetAngle(void) const
Retorna el angulo del eje mayor.
Pds::Vector GetMinorVector(void) const
Retorna el vector del eje menor.
double Evaluate(double x1, double x2) const
Evalua un punto en la elipse.
bool IsInside(const Pds::Point2D &p) const
Verifica si un elemento esta en la elipse o el perímetro.
Pds::Vector GetCentroid2(void) const
Retorna el centroide 2 de la elipse.
Pds::Ellipse & operator=(const Pds::Ellipse &B)
Copia en si mismo (A), un Shape B. Este operador es similar al método Copy().
Ellipse(const Pds::Point2D &xc1, const Pds::Point2D &xc2, double a)
Crea un objeto de tipo Pds::Ellipse.
Pds::Matrix RandPerimeter(unsigned int L) const
Retorna, en las lineas de la matriz, muestras que describen el perímetro del elipse.
Nombre de espacio para Pds (Procesamiento Digital de Senales)
Definition: AbstractRV.hpp:42

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed