bitlib_c  0.2.4
point.h
Go to the documentation of this file.
1 #ifndef _POINT_H_
2 #define _POINT_H_
3 
4 #include <stdbool.h>
5 
9 typedef struct Point {
10  double x;
11  double y;
12  struct Point* next;
14 
18 typedef struct Point_List {
19  struct Point* head;
20  struct Point* tail;
22 
33 
45 void bl_add_point_xy(bl_point_list* list, double x, double y);
46 
59 
71 
82 
94 bl_point* bl_make_point(double x, double y);
95 
111 
125 bl_point* bl_random_point(double x, double y, double w, double h);
126 
139 bl_point* bl_random_point_in_circle(double x, double y, double r);
140 
158 
170 bl_point* bl_point_from_polar(double angle, double radius);
171 
186 
199 
212 
225 void bl_point_translate(bl_point* p, double x, double y);
226 
239 void bl_point_scale(bl_point* p, double sx, double sy);
240 
252 void bl_point_rotate(bl_point* p, double angle);
253 
271 double bl_dot_product(bl_point* p0, bl_point* p1, bl_point* p2, bl_point* p3);
272 
291 
315 
337 
356 
373 bl_point* bl_tangent_point_to_circle(bl_point* p, double x, double y, double r, bool anticlockwise);
374 
375 #endif
bl_point_list
struct Point_List bl_point_list
bl_point_list_destroy
void bl_point_list_destroy(bl_point_list *list)
bl_point_translate
void bl_point_translate(bl_point *p, double x, double y)
bl_make_point
bl_point * bl_make_point(double x, double y)
bl_dot_product
double bl_dot_product(bl_point *p0, bl_point *p1, bl_point *p2, bl_point *p3)
bl_random_point_in_triangle
bl_point * bl_random_point_in_triangle(bl_point *p0, bl_point *p1, bl_point *p2)
bl_point_angle
double bl_point_angle(bl_point *p)
bl_quadratic_point
bl_point * bl_quadratic_point(bl_point *p0, bl_point *p1, bl_point *p2, double t)
bl_add_point
void bl_add_point(bl_point_list *list, bl_point *p)
bl_make_point_list
bl_point_list * bl_make_point_list()
Point
Definition: point.h:9
bl_point
struct Point bl_point
bl_add_point_xy
void bl_add_point_xy(bl_point_list *list, double x, double y)
Point_List::tail
struct Point * tail
Definition: point.h:20
Point_List
Definition: point.h:18
bl_point_rotate
void bl_point_rotate(bl_point *p, double angle)
bl_point_distance
double bl_point_distance(bl_point *p0, bl_point *p1)
bl_random_point
bl_point * bl_random_point(double x, double y, double w, double h)
bl_segment_intersect
bl_point * bl_segment_intersect(bl_point *p0, bl_point *p1, bl_point *p2, bl_point *p3)
bl_point_list_count
int bl_point_list_count(bl_point_list *list)
bl_point_magnitude
double bl_point_magnitude(bl_point *p)
bl_point_from_polar
bl_point * bl_point_from_polar(double angle, double radius)
Point_List::head
struct Point * head
Definition: point.h:19
bl_lerp_point
bl_point * bl_lerp_point(double t, bl_point *p0, bl_point *p1)
bl_angle_between
double bl_angle_between(bl_point *p0, bl_point *p1, bl_point *p2, bl_point *p3)
Point::y
double y
Definition: point.h:11
Point::x
double x
Definition: point.h:10
bl_random_point_in_circle
bl_point * bl_random_point_in_circle(double x, double y, double r)
bl_tangent_point_to_circle
bl_point * bl_tangent_point_to_circle(bl_point *p, double x, double y, double r, bool anticlockwise)
bl_bezier_point
bl_point * bl_bezier_point(bl_point *p0, bl_point *p1, bl_point *p2, bl_point *p3, double t)
Point::next
struct Point * next
Definition: point.h:12
bl_point_scale
void bl_point_scale(bl_point *p, double sx, double sy)