Home | Develop | Download | Contact
Namespaces | Estructuras de datos
Clase Pds::Line2D

Clase que implementa una linea en 2D. Más...

Namespaces

namespace  Pds
 Nombre de espacio para Pds (Procesamiento Digital de Senales)
 

Estructuras de datos

class  Pds::Line2D
 La clase tipo Pds::Line2D . Esta clase genera un objeto con dos parámetros theta y rho. Para usar incluir Pds/Line2D. Más...
 

Varios tipos de constructores

Crean una objeto Pds::Line2D

 Pds::Line2D::Line2D (void)
 Crea un objeto de tipo Pds::Line2D. Más...
 
 Pds::Line2D::Line2D (double theta, double rho)
 Crea un objeto de tipo Pds::Line2D. Más...
 
 Pds::Line2D::Line2D (double a, double b, double c)
 Crea un objeto de tipo Pds::Line2D. Más...
 
 Pds::Line2D::Line2D (const Pds::Line2D &B)
 Crea un objeto de tipo Pds::Line2D copiando datos desde otra. Más...
 
 Pds::Line2D::~Line2D ()
 

Get samples

Pds::Matrix Pds::Line2D::RandSamplesAngle (unsigned int L, double alpha1, double alpha2) const
 Retorna, en las lineas de la matriz, muestras que describen la linea. Más...
 

Eval samples

Pds::Vector Pds::Line2D::EvalSamples (const Pds::Matrix &X) const
 Evalua cada linea $\mathbf{x}^{(l)}$ de la matrix $\mathbf{X}$ en la ecuación $f(\mathbf{x}^{(l)})$. Más...
 
Pds::Vector Pds::Line2D::DistanceTo (const Pds::Matrix &X) const
 Evalua la distancia mínima de cada punto $\mathbf{x}^{(l)}$, en las lineas de la matrix $\mathbf{X}$, a la linea. Más...
 

Get data

double Pds::Line2D::GetRho (void) const
 Retorna la distancia $\rho$ perpendicular a la linea. Más...
 
double Pds::Line2D::GetTheta (void) const
 Retorna el ángulo $\theta$ de la distancia perpendicular a la linea. Más...
 
bool Pds::Line2D::GetLinearForm (double &a, double &b, double &c) const
 Retorna los parámetros de la forma linear. Más...
 

Static variados Pds::Line2D

static Pds::Line2D Pds::Line2D::GetLine (const Pds::Matrix &X, const std::string &Type="CovEig")
 Aproxima uma line a partir de muestras $\mathbf{x}_{l}$ agrupadas en las lineas de la matriz $\mathbf{X}$. Más...
 
static Pds::Line2D Pds::Line2D::GetLineCovEigMethod (const Pds::Matrix &X)
 Aproxima uma line a partir de muestras $\mathbf{x}_{l}$ agrupadas en las lineas de la matriz $\mathbf{X}$. Más...
 

Variados Pds::Line2D

Pds::Line2DPds::Line2D::operator= (const Pds::Line2D &B)
 Copia en si mismo (A), un Shape B. Este operador es similar al método Copy(). Más...
 
bool Pds::Line2D::Copy (const Pds::Line2D &B)
 Copia en si mismo (A), el contenido de un Shape B. Este método es similar a usar el operador = . Más...
 
void Pds::Line2D::MakeEmpty (void)
 Cera los datos internos. Más...
 
bool Pds::Line2D::IsEmpty (void) const
 Verifica si la línea es válida. Más...
 

Mostrando datos

void Pds::Line2D::Print (std::string str="") const
 Muestra en pantalla el contenido de Pds::Line2D, elementos separados por tabulador. Más...
 

Métodos para exportar e importar Json con Pds::Line2D.

Herramientas genéricas que pueden ser usadas desde Pds::Line2D

Pds::Json Pds::Line2D::ToJson (void) const
 Retorna un objeto Pds::Json con el contenido del objeto. Más...
 
bool Pds::Line2D::FromJson (const Pds::Json &J)
 Lee un objeto Pds::Json busca la etiqueta "Line2D" y lo carga. El objeto debe tener al menos los siguientes dados. Más...
 

Operadores no miembros de Line2D

Descripcion de algunos operadores habilitados a trabajar con Pds::Line2D.

std::ostream & operator<< (std::ostream &out, const Pds::Line2D &z)
 Retorna el contenido del objeto por la salida estándar. Más...
 

Descripción detallada

Clase que implementa una linea en 2D.

#include <Pds/Line2D>

Documentación de las funciones

◆ Line2D() [1/4]

Pds::Line2D::Line2D ( void  )

Crea un objeto de tipo Pds::Line2D.

◆ Line2D() [2/4]

Pds::Line2D::Line2D ( double  theta,
double  rho 
)

Crea un objeto de tipo Pds::Line2D.

la linea se define en su forma normal como:

\[cos(\theta)~x_1  +sin(\theta)~x_2  -\rho = 0\]

Atención
$\rho\geq 0$
Parámetros
[in]thetaÁngulo $\theta$ de la distancia perpendicular a la linea.
[in]rhola distancia $\rho\geq 0$ perpendicular a la linea.

◆ Line2D() [3/4]

Pds::Line2D::Line2D ( double  a,
double  b,
double  c 
)

Crea un objeto de tipo Pds::Line2D.

la linea se define en su forma linear como:

\[a~x_1  +b~x_2  +c=0\]

o también:

\[
\frac{-sign_{0}(c)~a}{\sqrt{a^2+b^2}}~x_1  +\frac{-sign_{0}(c)~b}{\sqrt{a^2+b^2}}~x_2  -\frac{sign_{0}(c)c}{\sqrt{a^2+b^2}} = 0
\qquad \rightarrow \qquad
cos(\theta)~x_1  +sin(\theta)~x_2  -\rho = 0
\]

\[
\theta\leftarrow atan2(-sign_{0}(c)~b,-sign_{0}(c)~a), \qquad 
\rho\leftarrow \frac{|c|}{\sqrt{a^2+b^2}}
\]

Donde la función $sign_{0}(c)$ retorna $+1$ si $c>=0$ y $-1$ en el caso contrario.

Parámetros
[in]aParámetro $a$.
[in]bParámetro $b$.
[in]cParámetro $c$.

◆ Line2D() [4/4]

Pds::Line2D::Line2D ( const Pds::Line2D B)

Crea un objeto de tipo Pds::Line2D copiando datos desde otra.

Parámetros
[in]BLine2D a copiar.

◆ RandSamplesAngle()

Pds::Matrix Pds::Line2D::RandSamplesAngle ( unsigned int  L,
double  alpha1,
double  alpha2 
) const

Retorna, en las lineas de la matriz, muestras que describen la linea.

En coordenadas polare el punto $(r~cos(\alpha),~r~sin(\alpha))$

\[
   r=\frac{\rho}{\alpha-\theta}
\]

donde $\alpha~U(\alpha_1,\alpha_2)$ está uniformente distribuido entre $\alpha_1$ y $\alpha_2$

example_line2d_create_randsamples.png
Parámetros
[in]LNúmero de muestras
[in]alpha1Ángulo $\alpha_1$ inicial
[in]alpha2Ángulo $\alpha_2$ final
Devuelve
Retorna, en las lineas de la matriz, muestras que describen la linea, o una matriz vacia en caso de error.
Ejemplos
example_line2d_create.cpp.

◆ EvalSamples()

Pds::Vector Pds::Line2D::EvalSamples ( const Pds::Matrix X) const

Evalua cada linea $\mathbf{x}^{(l)}$ de la matrix $\mathbf{X}$ en la ecuación $f(\mathbf{x}^{(l)})$.

\[
f(\mathbf{x})\equiv f(x_{1},x_{1})\equiv x_{1}cos(\theta)+x_{2}sin(\theta)-\rho 
\]

Parámetros
[in]XMatriz $\mathbf{X}$ de muestras.
Devuelve
Retorna un vector con la función $f(\mathbf{x}^{(l)})$ evaluada en cada muestra $\mathbf{x}^{(l)}$ de la matrix $\mathbf{X}$.
Ejemplos
example_optadam_create.cpp.

◆ DistanceTo()

Pds::Vector Pds::Line2D::DistanceTo ( const Pds::Matrix X) const

Evalua la distancia mínima de cada punto $\mathbf{x}^{(l)}$, en las lineas de la matrix $\mathbf{X}$, a la linea.

\[
f(\mathbf{x})\equiv f(x_{1},x_{1})\equiv x_{1}cos(\theta)+x_{2}sin(\theta)-\rho 
\]

Comentarios
Este método es un alias del método EvalSamples().
Parámetros
[in]XMatriz $\mathbf{X}$ de muestras.
Devuelve
Retorna un vector con las distancia o un vector vacio en caso de error.
Ver también
EvalSamples

◆ GetRho()

double Pds::Line2D::GetRho ( void  ) const

Retorna la distancia $\rho$ perpendicular a la linea.

\[x_1 cos(\theta) +x_2 sin(\theta) -\rho = 0\]

Devuelve
Retorna la distancia $\rho$ perpendicular a la linea, o Pds::Ra::Nan en caso de error.

◆ GetTheta()

double Pds::Line2D::GetTheta ( void  ) const

Retorna el ángulo $\theta$ de la distancia perpendicular a la linea.

\[x_1 cos(\theta) +x_2 sin(\theta) -\rho = 0\]

Devuelve
Retorna el ángulo $\theta$ de la distancia perpendicular a la linea, o Pds::Ra::Nan en caso de error.

◆ GetLinearForm()

bool Pds::Line2D::GetLinearForm ( double &  a,
double &  b,
double &  c 
) const

Retorna los parámetros de la forma linear.

\[
a~x_{1}+b~x_{2}+c=0
 \]

\[
\begin{array}{ll}
a&=cos(\theta) \\
b&=sin(\theta) \\
c&=-\rho \\
\end{array}
 \]

\[cos(\theta)~x_1 +sin(\theta)~x_2  -\rho = 0\]

Parámetros
[out]aParámetro a.
[out]bParámetro b.
[out]cParámetro c.
Devuelve
Retorna true si la linea existe y false si no.
Ejemplos
example_line2d_create.cpp.

◆ GetLine()

static Pds::Line2D Pds::Line2D::GetLine ( const Pds::Matrix X,
const std::string &  Type = "CovEig" 
)
static

Aproxima uma line a partir de muestras $\mathbf{x}_{l}$ agrupadas en las lineas de la matriz $\mathbf{X}$.

Parámetros
[in]XMuestras $\mathbf{x}_{l}$
[in]TypeTipo de cálculo. CovEig: usa GetLineCovEigMethod(); agrupadas en las lineas de la matriz $\mathbf{X}$.
Devuelve
Retorna la linea calculada o una linea vacia en caso de error.

◆ GetLineCovEigMethod()

static Pds::Line2D Pds::Line2D::GetLineCovEigMethod ( const Pds::Matrix X)
static

Aproxima uma line a partir de muestras $\mathbf{x}_{l}$ agrupadas en las lineas de la matriz $\mathbf{X}$.

\[
\mathbf{X} \equiv
\left[
\begin{matrix}
\mathbf{x}_{0}\\
\mathbf{x}_{1}\\
\vdots\\
\mathbf{x}_{L-1}
\end{matrix}
\right]
 \]

\[
\boldsymbol{\mu}_{\mathbf{x}} \leftarrow 
\left[
\begin{matrix}
\mu_{\mathbf{c}_{0}} ~~ \mu_{\mathbf{c}_{1}}
\end{matrix}
\right]
\equiv
\frac{1}{L}\sum_{l}^{L} \mathbf{x}_{l}
 \]

\[
\mathbf{S}\equiv
\frac{1}{L-1}\sum_{l}^{L} (\mathbf{x}_{l}-\boldsymbol{\mu}_{\mathbf{x}})^{T}(\mathbf{x}_{l}-\boldsymbol{\mu}_{\mathbf{x}})
 \]

Calculando Eigenvalues y Eigenvector:

\[
 \{\boldsymbol{\lambda},~ \mathbf{V}\}\leftarrow eig\left(\mathbf{S}\right)
 \]

Con los eigenvalues en orden ascendente

\[
 \boldsymbol{\lambda}=\left[\lambda_0,~\lambda_1\right],\qquad \mathbf{V}=\left[\mathbf{v}^0,~\mathbf{v}^1\right]
 \]

definimos la linea

\[
 a\leftarrow v_{0}^0,
 \qquad 
 b\leftarrow v_{1}^0, 
 \qquad 
 c \leftarrow -v_{0}^0~\mu_{\mathbf{c}_{0}}-v_{1}^0~\mu_{\mathbf{c}_{1}}
 \]

\[
 a~x_1+b~x_2+c=0
 \]

Parámetros
[in]XMuestras $\mathbf{x}_{l}$ agrupadas en las lineas de la matriz $\mathbf{X}$.
Devuelve
Retorna la linea calculada o una linea vacia en caso de error.
Ejemplos
example_line2d_create.cpp.

◆ operator=()

Pds::Line2D & Pds::Line2D::operator= ( const Pds::Line2D B)

Copia en si mismo (A), un Shape B. Este operador es similar al método Copy().

\[ A \leftarrow B \]

Cuando acontece:

Pds::Line2D B(1,2);
A=B;
La clase tipo Pds::Line2D . Esta clase genera un objeto con dos parámetros theta y rho....
Definition: Line2D.hpp:56

Cuando NO acontece:

Parámetros
[in]BEl Shape a copiar
Devuelve
Retorna el operador de la izquierda (acumulador) con el resultado, o un SHape vacío (this->IsEmpty() igual a true) en caso de error.
Ver también
Copy

◆ Copy()

bool Pds::Line2D::Copy ( const Pds::Line2D B)

Copia en si mismo (A), el contenido de un Shape B. Este método es similar a usar el operador = .

\[ A \leftarrow B \]

Parámetros
[in]BEl Shape a copiar
Devuelve
Retorna true si todo fue bien o false si no. Si se retorna false el receptor no altera su contenido.
Ver también
Copy

◆ MakeEmpty()

void Pds::Line2D::MakeEmpty ( void  )

Cera los datos internos.

$\rho=-1$ y $\theta=0$.

◆ IsEmpty()

bool Pds::Line2D::IsEmpty ( void  ) const

Verifica si la línea es válida.

◆ Print()

void Pds::Line2D::Print ( std::string  str = "") const

Muestra en pantalla el contenido de Pds::Line2D, elementos separados por tabulador.

Parámetros
[in]strTexto a mostrar antes de imprimir el contenido.
Ejemplos
example_line2d_create.cpp, example_line2d_export_json.cpp y example_optadam_create.cpp.

◆ ToJson()

Pds::Json Pds::Line2D::ToJson ( void  ) const

Retorna un objeto Pds::Json con el contenido del objeto.

Por exemplo:

{
"Line2D":
{
"theta":3.14159,
"rho":2
}
}
Devuelve
Retorna un objeto Pds::Json con el contenido del objeto.
Ejemplos
example_line2d_export_json.cpp.

◆ FromJson()

bool Pds::Line2D::FromJson ( const Pds::Json J)

Lee un objeto Pds::Json busca la etiqueta "Line2D" y lo carga. El objeto debe tener al menos los siguientes dados.

{
"Line2D":
{
"theta":3.14159,
"rho":2
}
}
Devuelve
Retorna true si la lectura sucedió sin errores y false si no. Si la lectura es incorrecta se vuelve vacia.
Ejemplos
example_line2d_export_json.cpp.

◆ operator<<()

std::ostream & operator<< ( std::ostream &  out,
const Pds::Line2D z 
)

Retorna el contenido del objeto por la salida estándar.

std::cout<<z;
Parámetros
[in]outLa salida
[in]zLa matriz a mostrar
Devuelve
Retorna la misma salida estándar out.

◆ ~Line2D()

Pds::Line2D::~Line2D ( )

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed