29 lines
753 B
C++
29 lines
753 B
C++
#include "mathutils.h"
|
|
#include <math.h>
|
|
|
|
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;
|
|
}
|