#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 ; #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;