#include "mathutils.h" #include float MathUtils::distance(float x1, float y1, float z1, float x2, float y2, float z2) { float dx = x2 - x1; float dy = y2 - y1; float dz = z2 - z1; return sqrt(dx*dx + dy*dy + dz*dz); } // Algorithm found at http://paulbourke.net/geometry/lineline2d/ bool MathUtils::lines_intersect(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { int denom = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1); int a = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3); int b = (x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3); if (denom == 0) return false; float ua = (float)a / denom; float ub = (float)b / denom; return ua > 0 && ua < 1 && ub > 0 && ub < 1; }