Cross-platform C SDK logo

Cross-platform C SDK

2D Circles

❮ Back
Next ❯
This page has been automatically translated using the Google Translate API services. We are working on improving texts. Thank you for your understanding and patience.

Functions

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

Types and Constants

Cir2DkNULL

Circles allow us to group a set of points within the same container volume. Collision detection will be performed optimally since it is the geometric test that requires the fewest operations. Given a set of points, we can calculate the container circle in various ways (Figure 1) depending on the precision and speed needed.

  • Use cir2d_from_boxf to get the circle from a 2D box.
  • Use cir2d_minimumf to obtain the circle of minimum radius from a set of points.
  • Use cir2d_from_pointsf to obtain the circle from the the set average. More balanced option in terms of precision/performance.
  • Circles from a set of points.
    Figure 1: Container circle: From BBox (a). Minimum radius (b).
❮ Back
Next ❯

kNULL

const Cir2Df kCIR2D_NULLf;

const Cir2Dd kCIR2D_NULLd;

const Cir2D Cir2D::kNULL;

Represents a null circle (no geometry).


cir2d ()

Create a 2d circle from its components.

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

Center x coordinate.

y

Center y coordinate.

r

Radius.

Return

The 2d circle.


cir2d_from_box ()

Create a circle containing a 2D box.

Cir2Df
cir2d_from_boxf(const B2D *box);

Cir2Dd
cir2d_from_boxd(const B2D *box);

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

The box.

Return

The circle.


cir2d_from_points ()

Create a circle containing a set of points.

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

The points vector.

n

The number of points.

Return

The circle.

Remarks

The center will be the midpoint of the set. The radius will be the distance to the farthest point from that center. Provides a good fit with linear cost.


cir2d_minimum ()

Calculate the circle of minimum radius that contains a set of points.

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

The points vector.

n

The number of points.

Return

The circle.

Remarks

Provides optimal adjustment in linear time. However, it is slower than cir2d_from_pointsf.


cir2d_area ()

Gets the area of ​​the circle.

real32_t
cir2d_areaf(const Cir2Df *cir);

real64_t
cir2d_aread(const Cir2Dd *cir);

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

The circle.

Return

The area (πr²).


cir2d_is_null ()

Check if a circle is null (dimensionless).

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

The circle.

Return

TRUE if it is null, FALSE if it contains any point.

Remarks

A single point is a valid circle with radius = 0.

❮ Back
Next ❯