Dibujo de entidades Geom2D
Funciones
void | draw_v2d (...) |
void | draw_seg2d (...) |
void | draw_cir2d (...) |
void | draw_box2d (...) |
void | draw_obb2d (...) |
void | draw_tri2d (...) |
void | draw_pol2d (...) |
En la sección anterior hemos visto las primitivas básicas para dibujar en 2D. No obstante, Draw2D dispone de funciones especializadas para los objetos de Geom2D. Estas nuevas funciones serían totalmente prescindibles, ya que podrías obtener el mismo resultado utilizando draw_rect
, draw_polygon
, etc. Se incluyen como un mero atajo, además de ofrecer una versión de las mismas basadas en Plantillas matemáticas, muy útiles al desarrollar algoritmos genéricos en C++. Las propiedades de línea y relleno serán las que estén vigentes en cada momento dentro del contexto, debido a: draw_line_color
, draw_line_width
, draw_fill_color
, etc.
- Utiliza draw_v2df para dibujar un punto.
- Utiliza draw_seg2df para dibujar un segmento.
- Utiliza draw_cir2df para dibujar un círculo.
- Utiliza draw_box2df para dibujar una caja alineada.
- Utiliza draw_obb2df para dibujar una caja orientada.
- Utiliza draw_tri2df para dibujar un triángulo.
- Utiliza draw_pol2df para dibujar un polígono.
Un ejemplo completo del uso de entidades 2D lo tienes en Col2DHello (Figura 1). Además de dibujar, en esta aplicación se muestran otros conceptos referentes a gráficos y cálculo geométrico tales como:
- Crear objetos 2D bajo demanda.
- Interactividad Click+Drag.
- Detección de colisiones.
- Cálculo de áreas.
- Triangulación de polígonos y descomposición en componentes convexas.
- Cálculo del círculo óptimo que envuelve a un conjunto de puntos.
- Cálculo de la caja orientada (
OBB2Df
) que mejor representa a un conjunto de puntos. - Cálculo de la envoltura convexa (Convex Hull).
draw_v2d ()
Dibuja un punto 2D.
void draw_v2df(DCtx *ctx, const drawop_t op, const V2Df *v2d, const real32_t radius); void draw_v2dd(DCtx *ctx, const drawop_t op, const V2Dd *v2d, const real64_t radius); void Draw::v2d(DCtx *ctx, const drawop_t op, const V2D *v2d, const real radius);
ctx | Contexto de dibujo. |
op | Operación de dibujo. |
v2d | Punto. |
radius | Radio. |
draw_seg2d ()
Dibuja un segmento 2D.
void draw_seg2df(DCtx *ctx, const Seg2Df *seg); void draw_seg2dd(DCtx *ctx, const Seg2Dd *seg); void Draw::seg2d(DCtx *ctx, const Seg2D *seg);
ctx | Contexto de dibujo. |
seg | Segmento. |
draw_cir2d ()
Dibuja un círculo 2D.
void draw_cir2df(DCtx *ctx, const drawop_t op, const Cir2Df *cir); void draw_cir2dd(DCtx *ctx, const drawop_t op, const Cir2Dd *cir); void Draw::cir2d(DCtx *ctx, const drawop_t op, const Cir2D *cir);
ctx | Contexto de dibujo. |
op | Operación de dibujo. |
cir | Círculo. |
draw_box2d ()
Dibuja una caja 2D.
void draw_box2df(DCtx *ctx, const drawop_t op, const Box2Df *box); void draw_box2dd(DCtx *ctx, const drawop_t op, const Box2Dd *box); void Draw::box2d(DCtx *ctx, const drawop_t op, const Box2D *box);
ctx | Contexto de dibujo. |
op | Operación de dibujo. |
box | Caja alineada. |
draw_obb2d ()
Dibuja una caja 2D orientada.
void draw_obb2df(DCtx *ctx, const drawop_t op, const OBB2Df *obb); void draw_obb2dd(DCtx *ctx, const drawop_t op, const OBB2Dd *obb); void Draw::obb2d(DCtx *ctx, const drawop_t op, const OBB2D *obb);
ctx | Contexto de dibujo. |
op | Operación de dibujo. |
obb | Caja orientada. |
draw_tri2d ()
Dibuja un triángulo 2D.
void draw_tri2df(DCtx *ctx, const drawop_t op, const Tri2Df *tri); void draw_tri2dd(DCtx *ctx, const drawop_t op, const Tri2Dd *tri); void Draw::tri2d(DCtx *ctx, const drawop_t op, const Tri2D *tri);
ctx | Contexto de dibujo. |
op | Operación de dibujo. |
tri | Triángulo. |
draw_pol2d ()
Dibuja un polígono 2D.
void draw_pol2df(DCtx *ctx, const drawop_t op, const Pol2Df *pol); void draw_pol2dd(DCtx *ctx, const drawop_t op, const Pol2Dd *pol); void Draw::pol2d(DCtx *ctx, const drawop_t op, const Pol2D *pol);
ctx | Contexto de dibujo. |
op | Operación de dibujo. |
pol | Polígono. |