[ create a new paste ] login | about

Link: http://codepad.org/phjNyJpL    [ raw code | output | fork ]

C, pasted on Jul 6:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdlib.h>

i;j;c;f(float*X,float*Y,float x,float y){for(c=i=0,j=2;i<3;)c^=(Y[i]>y)-(Y[j]>y)&(x<(X[j]-X[i])*(y-Y[i])/(Y[j]-Y[i])+X[j=i++]);return c;}

int main(void) {
	float good_x = -0.31961;
	float good_y = -0.12646;
	float good_X[] = {0.38478, -0.30613, -0.85548};
	float good_Y[] = {0.37419, -0.59754, 0.6633};

	float bad_x = -0.99103;
	float bad_y = 0.43842;
	float bad_X[] = {0.78128, -0.84714, -0.08925};
	float bad_Y[] = {-0.10985, -0.20558, -0.78608};

	puts( f(good_X, good_Y, good_x, good_y) ? "good" : "bad");
	puts( f(bad_X, bad_Y, bad_x, bad_y) ? "good" : "bad");
	return 0;
}


Output:
1
2
good
bad


Create a new paste based on this one


Comments: