27_declspec(dllexport)
bool fnMobility_findIntersect(NetSim_COORDINATES* p1, NetSim_COORDINATES* q1,
28 NetSim_COORDINATES* p2, NetSim_COORDINATES* q2,
29 NetSim_COORDINATES* intersect)
31 double s02_x, s02_y, s10_x, s10_y, s32_x, s32_y, s_numer, t_numer, denom, t;
32 s10_x = q1->X - p1->X;
33 s10_y = q1->Y - p1->Y;
34 s32_x = q2->X - p2->X;
35 s32_y = q2->Y - p2->Y;
37 denom = s10_x * s32_y - s32_x * s10_y;
40 bool denomPositive = denom > 0;
42 s02_x = p1->X - p2->X;
43 s02_y = p1->Y - p2->Y;
44 s_numer = s10_x * s02_y - s10_y * s02_x;
46 if ((s_numer < 0) == denomPositive)
49 t_numer = s32_x * s02_y - s32_y * s02_x;
50 if ((t_numer < 0) == denomPositive)
53 if (((s_numer > denom) == denomPositive) || ((t_numer > denom) == denomPositive))
59 intersect->X = p1->X + (t * s10_x);
61 intersect->Y = p1->Y + (t * s10_y);