00001 #ifndef __EH_POLYGON_H__
00002 #define __EH_POLYGON_H__
00003
00004 #include <glib.h>
00005
00008 typedef struct
00009 {
00010 double x;
00011 double y;
00012 }
00013 Eh_pt_2;
00014
00015 typedef GList* Eh_polygon_2;
00016
00017 Eh_polygon_2 eh_get_rectangle_polygon ( Eh_pt_2 center , double dx , double dy );
00018 Eh_polygon_2 eh_get_polygon_from_grid ( Eh_grid g , gssize i , gssize j );
00019 void eh_destroy_polygon ( Eh_polygon_2 p );
00020 GList* eh_find_polygon_crossings ( Eh_pt_2 start , double angle , Eh_polygon_2 area , int in_or_out );
00021 gboolean is_between_angles ( double angle , double angle_1 , double angle_2 );
00022 gboolean is_inside_area ( Eh_pt_2 x , Eh_polygon_2 area );
00023 Eh_pt_2 eh_get_unit_vector ( double angle );
00024 Eh_pt_2 eh_get_dir_vector ( Eh_pt_2 point_1 , Eh_pt_2 point_2 );
00025 Eh_pt_2 eh_get_norm_vector ( Eh_pt_2 u );
00026 double eh_get_vector_length ( Eh_pt_2 u );
00027 double eh_get_vector_angle ( Eh_pt_2 u );
00028 Eh_pt_2 eh_normalize_vector ( Eh_pt_2 u );
00029 double eh_dot_vectors ( Eh_pt_2 u , Eh_pt_2 v );
00030 double eh_get_angle_between_vectors( Eh_pt_2 u , Eh_pt_2 v );
00031
00036 typedef struct
00037 {
00038 double *x;
00039 double *y;
00040 int size;
00041 } pos_t;
00042
00043 pos_t* createPosVec(int size) G_GNUC_DEPRECATED;
00044 void destroyPosVec(pos_t *v) G_GNUC_DEPRECATED;
00045 double *derivative(pos_t v) G_GNUC_DEPRECATED;
00046
00047 Eh_pt_2 eh_create_pt_2( double x , double y );
00048 gboolean eh_cmp_pt_2 ( Eh_pt_2 a , Eh_pt_2 b , double eps );
00049
00050 #endif