SDK Multiplataforma en C logo

SDK Multiplataforma en C

Círculos 2D

❮ Anterior
Siguiente ❯

Funciones

Cir2Dcir2d (...)
Cir2Dcir2d_from_box (...)
Cir2Dcir2d_from_points (...)
Cir2Dcir2d_minimum (...)
realcir2d_area (...)
bool_tcir2d_is_null (...)

Tipos y Constantes

Cir2DkNULL

Los círculos nos permiten agrupar un conjunto de puntos dentro de un mismo volumen contenedor. La detección de colisiones se realizará de manera óptima ya que es el test geométrico que menos operaciones requiere. Dado un conjunto de puntos, podemos calcular el círculo contenedor de varias formas (Figura 1) según la precisión y velocidad necesarias.

  • Utiliza cir2d_from_boxf para obtener el círculo a partir de una caja 2D.
  • Utiliza cir2d_minimumf para el obtener el círculo de radio mínimo a partir de un conjunto de puntos.
  • Utiliza cir2d_from_pointsf para obtener el círculo a partir de la media del conjunto. Opción más equilibrada en cuanto a precisión/rendimiento.
  • Círculos a partir de un conjunto de puntos.
    Figura 1: Círculo contenedor: A partir de BBox (a). De radio mínimo (b).
❮ Anterior
Siguiente ❯

kNULL

const Cir2Df kCIR2D_NULLf;

const Cir2Dd kCIR2D_NULLd;

const Cir2D Cir2D::kNULL;

Representa un círculo nulo (sin geometría).


cir2d ()

Crea un círculo 2d a partir de sus componentes.

Cir2Df
cir2df(const real32_t x,
       const real32_t y,
       const real32_t r);

Cir2Dd
cir2dd(const real64_t x,
       const real64_t y,
       const real64_t r);

Cir2D
Cir2D(const real x,
      const real y,
      const real r);
x

Coordenada x del centro.

y

Coordenada y del centro.

r

Radio.

Retorna

El círculo 2d.


cir2d_from_box ()

Crea un círculo que contiene a una caja 2D.

Cir2Df
cir2d_from_boxf(const B2D *box);

Cir2Dd
cir2d_from_boxd(const B2D *box);

Cir2D
Cir2D::from_box(const B2D *box);
box

La caja.

Retorna

El círculo.


cir2d_from_points ()

Crea un círculo que contiene un conjunto de puntos.

Cir2Df
cir2d_from_pointsf(const V2Df *p,
                   const uint32_t n);

Cir2Dd
cir2d_from_pointsd(const V2Dd *p,
                   const uint32_t n);

Cir2D
Cir2D::from_points(const V2D *p,
                   const uint32_t n);
p

El vector de puntos.

n

El número de puntos.

Retorna

El círculo.

Observaciones

El centro será el punto medio del conjunto. El radio será la distancia al punto más alejado de dicho centro. Proporciona un buen ajuste con coste lineal.


cir2d_minimum ()

Calcula el círculo de radio mínimo que contiene a un conjunto de puntos.

Cir2Df
cir2d_minimumf(const V2Df *p,
               const uint32_t n);

Cir2Dd
cir2d_minimumd(const V2Dd *p,
               const uint32_t n);

Cir2D
Cir2D::minimum(const V2D *p,
               const uint32_t n);
p

El vector de puntos.

n

El número de puntos.

Retorna

El círculo.

Observaciones

Proporciona un ajuste óptimo en tiempo lineal. No obstante, es más lento que cir2d_from_pointsf.


cir2d_area ()

Obtiene el área del círculo.

real32_t
cir2d_areaf(const Cir2Df *cir);

real64_t
cir2d_aread(const Cir2Dd *cir);

real
Cir2D::area(const Cir2D *cir);
cir

El círculo.

Retorna

El área (πr²).


cir2d_is_null ()

Comprueba si un círculo es nulo (sin dimensión).

bool_t
cir2d_is_nullf(const Cir2Df *cir);

bool_t
cir2d_is_nulld(const Cir2Dd *cir);

bool_t
Cir2D::is_null(const Cir2D *cir);
cir

El círculo.

Retorna

TRUE si es nulo, FALSE si contiene algún punto.

Observaciones

Un solo punto es un círculo válido con radio = 0.

❮ Anterior
Siguiente ❯