00001 00009 #ifndef ARSTOOLBOX_H_ 00010 #define ARSTOOLBOX_H_ 00011 00012 #include "Geometry.h" 00013 00014 class ArsToolbox 00015 { 00016 public: 00017 00018 static int lineLineCrossPoint(double x1, double y1, double x2, double y2, 00019 double x3, double y3,double x4, double y4, double *cpx, 00020 double *cpy); 00021 00022 static int circleCircleIntersection(double x0, double y0, double r0, 00023 double x1, double y1, double r1, 00024 double *xi, double *yi, 00025 double *xi_prime, double *yi_prime); 00026 00027 static double vectorsAngle(double v1ex, double v1ey, double v2ex, double v2ey); 00028 00029 static double vectorNorm(double v1x, double v1y); 00030 00031 static int circleLineIntersection(double p1x, double p1y, double p2x, 00032 double p2y, double cx, double cy, double r, double *v1x, 00033 double *v1y, double *v2x, double *v2y, bool line); 00034 static int circleLineIntersection(double p1x, double p1y, double p2x, 00035 double p2y, double cx, double cy, double r, double *v1x, 00036 double *v1y, double *v2x, double *v2y); 00037 00038 static int createLineTo(double sx, double sy, double angle, double length, 00039 double *ex, double *ey); 00040 00041 static double linePointDistance(double dX1, double dY1, double dX2, double dY2, 00042 double dPX, double dPY); 00043 static double trim(double value, double min, double max); 00044 static int distancePointLine(VecPosition point, VecPosition lineStart, VecPosition lineEnd, double *distance); 00045 00046 00047 00048 static double computeLeastInterceptTime(VecPosition b0, VecPosition v0, VecPosition r0, double vR, double tau = 2.0); 00049 }; 00050 00051 #endif 00052