1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237
|
#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;
|