#N canvas 97 22 1086 756 10;
#X text 21 37 calculates \, if the given line segment is crossed by
the virtual line segment \, determined by the cursor position and a
test point.;
#X text 21 80 needed for the calculations of cursor interaction with
a polygon.;
#X obj 488 369 -;
#X obj 498 339 t b f;
#X obj 438 382 t b f;
#X obj 488 425 *;
#X obj 366 287 unpack f f;
#X obj 423 307 * -1;
#X obj 538 516 t b f;
#X obj 488 563 -;
#X obj 538 439 -;
#X obj 548 409 t b f;
#X obj 611 445 t b f;
#X obj 538 495 *;
#X obj 611 378 unpack f f;
#X obj 611 402 * -1;
#X obj 166 312 -;
#X obj 176 282 t b f;
#X obj 126 375 t b f;
#X obj 166 418 *;
#X obj 69 262 unpack f f;
#X obj 126 332 * -1;
#X obj 196 569 t b f;
#X obj 166 616 -;
#X obj 196 472 -;
#X obj 196 401 t b f;
#X obj 259 498 t b f;
#X obj 196 548 *;
#X obj 259 401 unpack f f;
#X obj 259 455 * -1;
#X obj 378 666 /;
#X obj 388 636 t b f;
#X obj 378 726 >= 0;
#X obj 412 726 <= 1;
#X obj 378 753 &&;
#X obj 732 338 -;
#X obj 742 308 t b f;
#X obj 742 287 unpack f f;
#X obj 742 435 -;
#X obj 752 405 t b f;
#X obj 742 593 unpack f f;
#X obj 742 617 * -1;
#X obj 732 694 /;
#X obj 742 664 t b f;
#X obj 742 518 t b f;
#X obj 732 548 +;
#X obj 742 465 t b f;
#X obj 742 495 *;
#X obj 378 696 t f f f;
#X obj 732 749 >= 0;
#X obj 766 749 <= 1;
#X obj 732 776 &&;
#X obj 732 719 t f f;
#X obj 732 827 &&;
#X obj 732 801 t b f;
#X text 386 212 N=(b_1 -a_1 )*(d_2 -c_2 )-(b_2 -a_2 )*(d_1 -c_1 );
#X text 51 696 s=((c_1 -a_1 )*(d_2 -c_2 )-(c_2 -a_2 )*(d_1 -c_1 ))/N
;
#X text 68 212 (c_1 -a_1 )*(d_2 -c_2 )-(c_2 -a_2 )*(d_1 -c_1 );
#X text 726 213 t=(a_1 -c_1 +s*(b_1 -a_1))/(d_1 -c_1);
#X text 84 864 line segment S_1 is given by the points A (a_1 /a_2)
and B(b_1 /b_2) \, line segment S_2 by C and D.;
#X text 84 894 N = 0 --> S_1 || S_2;
#X text 84 934 x_s = a_1 + s*(b_1 - a_1);
#X text 84 954 y_s = a_2 + s*(b_2 - a_2);
#X text 84 914 the coordinates of the intersection S:;
#X text 84 984 0 <= s <= 1 AND 0 <= t <= 1 --> S lies on AB and CD.
;
#X obj 126 355 + 1000;
#X obj 259 478 + 1000;
#X obj 438 362 + 1000;
#X obj 611 425 + 1000;
#X obj 742 640 + 1000;
#X text 84 1014 D is set to (1000 / 1000) \, what should be always
outside the polygon.;
#X obj 28 156 t l l;
#X obj 28 813 outlet cursor-list;
#X obj 28 125 inlet cursor-list;
#X text 613 117 (c)2011 Marian Weger /part of GIL/;
#X obj 615 42 cnv 15 220 50 empty empty HELP? 20 12 0 14 -261234 -258113
0;
#X text 616 69 for further help: see [gil_example];
#X obj 55 179 s \$0-cursor-list;
#X obj 69 242 r \$0-cursor-list;
#X obj 366 267 r \$0-cursor-list;
#X obj 742 267 r \$0-cursor-list;
#X obj 611 358 r \$0-cursor-list;
#X obj 259 381 r \$0-cursor-list;
#X obj 742 573 r \$0-cursor-list;
#X obj 198 125 inlet a_1;
#X obj 198 146 s \$0-a_1;
#X obj 268 125 inlet a_2;
#X obj 268 146 s \$0-a_2;
#X obj 338 125 inlet b_1;
#X obj 338 146 s \$0-b_1;
#X obj 408 125 inlet b_2;
#X obj 408 146 s \$0-b_2;
#X obj 176 262 r \$0-a_1;
#X obj 196 381 r \$0-a_2;
#X obj 488 299 r \$0-b_1;
#X obj 498 319 r \$0-a_1;
#X obj 538 369 r \$0-b_2;
#X obj 548 389 r \$0-a_2;
#X obj 732 244 r \$0-a_1;
#X obj 752 385 r \$0-a_1;
#X obj 742 365 r \$0-b_1;
#X obj 732 857 outlet crossing;
#X text 21 7 gil_polygon_side <test point position (optional)>;
#X obj 503 41 loadbang;
#X obj 503 61 float \$1;
#X obj 503 81 sel 0;
#X msg 503 104 1000;
#X obj 530 133 s \$0-test;
#X obj 292 455 r \$0-test;
#X obj 215 324 r \$0-test;
#X obj 644 402 r \$0-test;
#X obj 775 617 r \$0-test;
#X obj 471 267 r \$0-test;
#X text 516 943 The cursor C is inside a polygon \, if the line segment
CD to a point outside the polygon is crossing an uneven number of sides
of the polygon. This is always true for all kinds of polygons.;
#X connect 2 0 5 0;
#X connect 3 0 2 0;
#X connect 3 1 2 1;
#X connect 4 0 5 0;
#X connect 4 1 5 1;
#X connect 5 0 9 0;
#X connect 6 1 7 0;
#X connect 7 0 67 0;
#X connect 8 0 9 0;
#X connect 8 1 9 1;
#X connect 9 0 31 0;
#X connect 10 0 13 0;
#X connect 11 0 10 0;
#X connect 11 1 10 1;
#X connect 12 0 13 0;
#X connect 12 1 13 1;
#X connect 13 0 8 0;
#X connect 14 0 15 0;
#X connect 15 0 68 0;
#X connect 16 0 19 0;
#X connect 17 0 16 0;
#X connect 17 1 16 1;
#X connect 18 0 19 0;
#X connect 18 1 19 1;
#X connect 19 0 23 0;
#X connect 20 0 16 0;
#X connect 20 1 21 0;
#X connect 21 0 65 0;
#X connect 22 0 23 0;
#X connect 22 1 23 1;
#X connect 23 0 30 0;
#X connect 24 0 27 0;
#X connect 25 0 24 0;
#X connect 25 1 24 1;
#X connect 26 0 27 0;
#X connect 26 1 27 1;
#X connect 27 0 22 0;
#X connect 28 0 29 0;
#X connect 28 1 24 0;
#X connect 29 0 66 0;
#X connect 30 0 48 0;
#X connect 31 0 30 0;
#X connect 31 1 30 1;
#X connect 32 0 34 0;
#X connect 33 0 34 1;
#X connect 34 0 53 0;
#X connect 35 0 45 0;
#X connect 36 0 35 0;
#X connect 36 1 35 1;
#X connect 37 0 36 0;
#X connect 38 0 46 0;
#X connect 39 0 38 0;
#X connect 39 1 38 1;
#X connect 40 0 41 0;
#X connect 41 0 69 0;
#X connect 42 0 52 0;
#X connect 43 0 42 0;
#X connect 43 1 42 1;
#X connect 44 0 45 0;
#X connect 44 1 45 1;
#X connect 45 0 42 0;
#X connect 46 0 47 0;
#X connect 46 1 47 1;
#X connect 47 0 44 0;
#X connect 48 0 32 0;
#X connect 48 1 33 0;
#X connect 48 2 47 0;
#X connect 49 0 51 0;
#X connect 50 0 51 1;
#X connect 51 0 54 0;
#X connect 52 0 49 0;
#X connect 52 1 50 0;
#X connect 53 0 101 0;
#X connect 54 0 53 0;
#X connect 54 1 53 1;
#X connect 65 0 18 0;
#X connect 66 0 26 0;
#X connect 67 0 4 0;
#X connect 68 0 12 0;
#X connect 69 0 43 0;
#X connect 71 0 72 0;
#X connect 71 1 77 0;
#X connect 73 0 71 0;
#X connect 78 0 20 0;
#X connect 79 0 6 0;
#X connect 80 0 37 0;
#X connect 81 0 14 0;
#X connect 82 0 28 0;
#X connect 83 0 40 0;
#X connect 84 0 85 0;
#X connect 86 0 87 0;
#X connect 88 0 89 0;
#X connect 90 0 91 0;
#X connect 92 0 17 0;
#X connect 93 0 25 0;
#X connect 94 0 2 0;
#X connect 95 0 3 0;
#X connect 96 0 10 0;
#X connect 97 0 11 0;
#X connect 98 0 35 0;
#X connect 99 0 39 0;
#X connect 100 0 38 0;
#X connect 103 0 104 0;
#X connect 104 0 105 0;
#X connect 105 0 106 0;
#X connect 105 1 107 0;
#X connect 106 0 107 0;
#X connect 108 0 66 1;
#X connect 109 0 65 1;
#X connect 110 0 68 1;
#X connect 111 0 69 1;
#X connect 112 0 67 1;
