Codice: Seleziona tutto
//belongs a point in segment? return true false;
//argument0 = Px, argument1 = Py, argument2 = S1x, argument3 S1Y, argument4 = S2x, argument5 S2Y,
var p_x = argument0;
var p_y = argument1;
var s1_x = argument2;
var s1_y = argument3;
var s2_x = argument4;
var s2_y = argument5;
var E = 0.001;
if (p_x - max(s1_x, s2_x) > E ||
min(s1_x, s2_x) - p_x > E ||
p_y - max(s1_y, s2_y) > E ||
min(s1_y, s2_y) - p_y > E)
return false;
if (abs(s2_x - s1_x) < E)
return abs(s1_x - p_x) < E || abs(s2_x - p_x) < E;
if (abs(s2_y - s1_y) < E)
return abs(s1_y - p_y) < E || abs(s2_y - p_y) < E;
var X = s1_x + (p_y - s1_y) * (s2_x - s1_x) / (s2_y - s1_y);
var Y = s1_y + (p_x - s1_x) * (s2_y - s1_y) / (s2_x - s1_x);
return abs(p_x - X) < E || abs(p_y - Y) < E;