Top |
#define | GRAPHENE_POINT_INIT() |
graphene_point_t * | graphene_point_alloc () |
void | graphene_point_free () |
graphene_point_t * | graphene_point_init () |
graphene_point_t * | graphene_point_init_from_point () |
graphene_point_t * | graphene_point_init_from_vec2 () |
bool | graphene_point_equal () |
float | graphene_point_distance () |
bool | graphene_point_near () |
void | graphene_point_interpolate () |
void | graphene_point_to_vec2 () |
const graphene_point_t * | graphene_point_zero () |
graphene_point_t is a data structure capable of describing a point with two coordinates:
graphene_point_t.x
graphene_point_t.y
#define GRAPHENE_POINT_INIT(_x,_y) (graphene_point_t) { .x = (_x), .y = (_y) }
Initializes a graphene_point_t with the given coordinates when declaring it, e.g:
1 |
graphene_point_t p = GRAPHENE_POINT_INIT (10.f, 10.f); |
Since: 1.0
graphene_point_t *
graphene_point_alloc (void
);
Allocates a new graphene_point_t structure.
The coordinates of the returned point are (0, 0).
It's possible to chain this function with graphene_point_init()
or graphene_point_init_from_point()
, e.g.:
1 2 3 4 5 6 7 8 9 10 11 |
graphene_point_t * point_new (float x, float y) { return graphene_point_init (graphene_point_alloc (), x, y); } graphene_point_t * point_copy (const graphene_point_t *p) { return graphene_point_init_from_point (graphene_point_alloc (), p); } |
[constructor]
the newly allocated graphene_point_t.
Use graphene_point_free()
to free the resources allocated by
this function.
[transfer full]
Since: 1.0
void
graphene_point_free (graphene_point_t *p
);
Frees the resources allocated by graphene_point_alloc()
.
Since: 1.0
graphene_point_t * graphene_point_init (graphene_point_t *p
,float x
,float y
);
Initializes p
to the given x
and y
coordinates.
It's safe to call this function multiple times.
Since: 1.0
graphene_point_t * graphene_point_init_from_point (graphene_point_t *p
,const graphene_point_t *src
);
Initializes p
with the same coordinates of src
.
Since: 1.0
graphene_point_t * graphene_point_init_from_vec2 (graphene_point_t *p
,const graphene_vec2_t *src
);
Initializes p
with the coordinates inside the given graphene_vec2_t.
Since: 1.4
bool graphene_point_equal (const graphene_point_t *a
,const graphene_point_t *b
);
Checks if the two points a
and b
point to the same
coordinates.
This function accounts for floating point fluctuations; if
you want to control the fuzziness of the match, you can use
graphene_point_near()
instead.
Since: 1.0
float graphene_point_distance (const graphene_point_t *a
,const graphene_point_t *b
,float *d_x
,float *d_y
);
Computes the distance between a
and b
.
a |
||
b |
||
d_x |
distance component on the X axis. |
[out][optional] |
d_y |
distance component on the Y axis. |
[out][optional] |
Since: 1.0
bool graphene_point_near (const graphene_point_t *a
,const graphene_point_t *b
,float epsilon
);
Checks whether the two points a
and b
are within
the threshold of epsilon
.
Since: 1.0
void graphene_point_interpolate (const graphene_point_t *a
,const graphene_point_t *b
,double factor
,graphene_point_t *res
);
Linearly interpolates the coordinates of a
and b
using the
given factor
.
a |
||
b |
||
factor |
the linear interpolation factor |
|
res |
return location for the interpolated point. |
[out caller-allocates] |
Since: 1.0
void graphene_point_to_vec2 (const graphene_point_t *p
,graphene_vec2_t *v
);
Stores the coordinates of the given graphene_point_t into a graphene_vec2_t.
Since: 1.4
const graphene_point_t *
graphene_point_zero (void
);
Returns a point fixed at (0, 0).
Since: 1.0
#define GRAPHENE_POINT_INIT_ZERO GRAPHENE_POINT_INIT (0.f, 0.f)
Initializes a graphene_point_t to (0, 0) when declaring it.
Since: 1.0
typedef struct { float x; float y; } graphene_point_t;
A point with two coordinates.
Since: 1.0