Círculos 2D
Funciones
Cir2D | cir2d (...) |
Cir2D | cir2d_from_box (...) |
Cir2D | cir2d_from_points (...) |
Cir2D | cir2d_minimum (...) |
real | cir2d_area (...) |
bool_t | cir2d_is_null (...) |
Tipos y Constantes
Cir2D | kNULL |
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.
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.