From 7e071db6bee659dbd2b4261830f4e2f10bc8ba33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Stensg=C3=A5rd?= Date: Tue, 19 Oct 2010 00:20:35 +0200 Subject: Fail. --- 3dmath.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 3dmath.c (limited to '3dmath.c') diff --git a/3dmath.c b/3dmath.c new file mode 100644 index 0000000..d729323 --- /dev/null +++ b/3dmath.c @@ -0,0 +1,36 @@ +#include + +#define POW2(x) ((x) * (x)) + +float +dot(float x[3], float y[3]) { + return x[0] * y[0] + x[1] * y[1] + x[2] * y[2]; +} + +void +normalize(float x[3]) { + float len; + int i; + + len = sqrt(dot(x, x)); + + for(i = 0; i < 3; ++i) + x[i] /= len; +} + +float +sphere_intersect(float s[3], float d[3], float c[3], float r) { + int i; + float D; + float v[3]; + + for(i = 0; i < 3; ++i) + v[i] = s[i] - c[i]; + + D = POW2(dot(v, d)) - 4 * (dot(v, v) - POW2(r)); + + if(D < 0) + return -1; + + return 1; +} -- cgit v1.2.3