gil_polygon_side.pd 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. #N canvas 97 22 1086 756 10;
  2. #X text 21 37 calculates \, if the given line segment is crossed by
  3. the virtual line segment \, determined by the cursor position and a
  4. test point.;
  5. #X text 21 80 needed for the calculations of cursor interaction with
  6. a polygon.;
  7. #X obj 488 369 -;
  8. #X obj 498 339 t b f;
  9. #X obj 438 382 t b f;
  10. #X obj 488 425 *;
  11. #X obj 366 287 unpack f f;
  12. #X obj 423 307 * -1;
  13. #X obj 538 516 t b f;
  14. #X obj 488 563 -;
  15. #X obj 538 439 -;
  16. #X obj 548 409 t b f;
  17. #X obj 611 445 t b f;
  18. #X obj 538 495 *;
  19. #X obj 611 378 unpack f f;
  20. #X obj 611 402 * -1;
  21. #X obj 166 312 -;
  22. #X obj 176 282 t b f;
  23. #X obj 126 375 t b f;
  24. #X obj 166 418 *;
  25. #X obj 69 262 unpack f f;
  26. #X obj 126 332 * -1;
  27. #X obj 196 569 t b f;
  28. #X obj 166 616 -;
  29. #X obj 196 472 -;
  30. #X obj 196 401 t b f;
  31. #X obj 259 498 t b f;
  32. #X obj 196 548 *;
  33. #X obj 259 401 unpack f f;
  34. #X obj 259 455 * -1;
  35. #X obj 378 666 /;
  36. #X obj 388 636 t b f;
  37. #X obj 378 726 >= 0;
  38. #X obj 412 726 <= 1;
  39. #X obj 378 753 &&;
  40. #X obj 732 338 -;
  41. #X obj 742 308 t b f;
  42. #X obj 742 287 unpack f f;
  43. #X obj 742 435 -;
  44. #X obj 752 405 t b f;
  45. #X obj 742 593 unpack f f;
  46. #X obj 742 617 * -1;
  47. #X obj 732 694 /;
  48. #X obj 742 664 t b f;
  49. #X obj 742 518 t b f;
  50. #X obj 732 548 +;
  51. #X obj 742 465 t b f;
  52. #X obj 742 495 *;
  53. #X obj 378 696 t f f f;
  54. #X obj 732 749 >= 0;
  55. #X obj 766 749 <= 1;
  56. #X obj 732 776 &&;
  57. #X obj 732 719 t f f;
  58. #X obj 732 827 &&;
  59. #X obj 732 801 t b f;
  60. #X text 386 212 N=(b_1 -a_1 )*(d_2 -c_2 )-(b_2 -a_2 )*(d_1 -c_1 );
  61. #X text 51 696 s=((c_1 -a_1 )*(d_2 -c_2 )-(c_2 -a_2 )*(d_1 -c_1 ))/N
  62. ;
  63. #X text 68 212 (c_1 -a_1 )*(d_2 -c_2 )-(c_2 -a_2 )*(d_1 -c_1 );
  64. #X text 726 213 t=(a_1 -c_1 +s*(b_1 -a_1))/(d_1 -c_1);
  65. #X text 84 864 line segment S_1 is given by the points A (a_1 /a_2)
  66. and B(b_1 /b_2) \, line segment S_2 by C and D.;
  67. #X text 84 894 N = 0 --> S_1 || S_2;
  68. #X text 84 934 x_s = a_1 + s*(b_1 - a_1);
  69. #X text 84 954 y_s = a_2 + s*(b_2 - a_2);
  70. #X text 84 914 the coordinates of the intersection S:;
  71. #X text 84 984 0 <= s <= 1 AND 0 <= t <= 1 --> S lies on AB and CD.
  72. ;
  73. #X obj 126 355 + 1000;
  74. #X obj 259 478 + 1000;
  75. #X obj 438 362 + 1000;
  76. #X obj 611 425 + 1000;
  77. #X obj 742 640 + 1000;
  78. #X text 84 1014 D is set to (1000 / 1000) \, what should be always
  79. outside the polygon.;
  80. #X obj 28 156 t l l;
  81. #X obj 28 813 outlet cursor-list;
  82. #X obj 28 125 inlet cursor-list;
  83. #X text 613 117 (c)2011 Marian Weger /part of GIL/;
  84. #X obj 615 42 cnv 15 220 50 empty empty HELP? 20 12 0 14 -261234 -258113
  85. 0;
  86. #X text 616 69 for further help: see [gil_example];
  87. #X obj 55 179 s \$0-cursor-list;
  88. #X obj 69 242 r \$0-cursor-list;
  89. #X obj 366 267 r \$0-cursor-list;
  90. #X obj 742 267 r \$0-cursor-list;
  91. #X obj 611 358 r \$0-cursor-list;
  92. #X obj 259 381 r \$0-cursor-list;
  93. #X obj 742 573 r \$0-cursor-list;
  94. #X obj 198 125 inlet a_1;
  95. #X obj 198 146 s \$0-a_1;
  96. #X obj 268 125 inlet a_2;
  97. #X obj 268 146 s \$0-a_2;
  98. #X obj 338 125 inlet b_1;
  99. #X obj 338 146 s \$0-b_1;
  100. #X obj 408 125 inlet b_2;
  101. #X obj 408 146 s \$0-b_2;
  102. #X obj 176 262 r \$0-a_1;
  103. #X obj 196 381 r \$0-a_2;
  104. #X obj 488 299 r \$0-b_1;
  105. #X obj 498 319 r \$0-a_1;
  106. #X obj 538 369 r \$0-b_2;
  107. #X obj 548 389 r \$0-a_2;
  108. #X obj 732 244 r \$0-a_1;
  109. #X obj 752 385 r \$0-a_1;
  110. #X obj 742 365 r \$0-b_1;
  111. #X obj 732 857 outlet crossing;
  112. #X text 21 7 gil_polygon_side <test point position (optional)>;
  113. #X obj 503 41 loadbang;
  114. #X obj 503 61 float \$1;
  115. #X obj 503 81 sel 0;
  116. #X msg 503 104 1000;
  117. #X obj 530 133 s \$0-test;
  118. #X obj 292 455 r \$0-test;
  119. #X obj 215 324 r \$0-test;
  120. #X obj 644 402 r \$0-test;
  121. #X obj 775 617 r \$0-test;
  122. #X obj 471 267 r \$0-test;
  123. #X text 516 943 The cursor C is inside a polygon \, if the line segment
  124. CD to a point outside the polygon is crossing an uneven number of sides
  125. of the polygon. This is always true for all kinds of polygons.;
  126. #X connect 2 0 5 0;
  127. #X connect 3 0 2 0;
  128. #X connect 3 1 2 1;
  129. #X connect 4 0 5 0;
  130. #X connect 4 1 5 1;
  131. #X connect 5 0 9 0;
  132. #X connect 6 1 7 0;
  133. #X connect 7 0 67 0;
  134. #X connect 8 0 9 0;
  135. #X connect 8 1 9 1;
  136. #X connect 9 0 31 0;
  137. #X connect 10 0 13 0;
  138. #X connect 11 0 10 0;
  139. #X connect 11 1 10 1;
  140. #X connect 12 0 13 0;
  141. #X connect 12 1 13 1;
  142. #X connect 13 0 8 0;
  143. #X connect 14 0 15 0;
  144. #X connect 15 0 68 0;
  145. #X connect 16 0 19 0;
  146. #X connect 17 0 16 0;
  147. #X connect 17 1 16 1;
  148. #X connect 18 0 19 0;
  149. #X connect 18 1 19 1;
  150. #X connect 19 0 23 0;
  151. #X connect 20 0 16 0;
  152. #X connect 20 1 21 0;
  153. #X connect 21 0 65 0;
  154. #X connect 22 0 23 0;
  155. #X connect 22 1 23 1;
  156. #X connect 23 0 30 0;
  157. #X connect 24 0 27 0;
  158. #X connect 25 0 24 0;
  159. #X connect 25 1 24 1;
  160. #X connect 26 0 27 0;
  161. #X connect 26 1 27 1;
  162. #X connect 27 0 22 0;
  163. #X connect 28 0 29 0;
  164. #X connect 28 1 24 0;
  165. #X connect 29 0 66 0;
  166. #X connect 30 0 48 0;
  167. #X connect 31 0 30 0;
  168. #X connect 31 1 30 1;
  169. #X connect 32 0 34 0;
  170. #X connect 33 0 34 1;
  171. #X connect 34 0 53 0;
  172. #X connect 35 0 45 0;
  173. #X connect 36 0 35 0;
  174. #X connect 36 1 35 1;
  175. #X connect 37 0 36 0;
  176. #X connect 38 0 46 0;
  177. #X connect 39 0 38 0;
  178. #X connect 39 1 38 1;
  179. #X connect 40 0 41 0;
  180. #X connect 41 0 69 0;
  181. #X connect 42 0 52 0;
  182. #X connect 43 0 42 0;
  183. #X connect 43 1 42 1;
  184. #X connect 44 0 45 0;
  185. #X connect 44 1 45 1;
  186. #X connect 45 0 42 0;
  187. #X connect 46 0 47 0;
  188. #X connect 46 1 47 1;
  189. #X connect 47 0 44 0;
  190. #X connect 48 0 32 0;
  191. #X connect 48 1 33 0;
  192. #X connect 48 2 47 0;
  193. #X connect 49 0 51 0;
  194. #X connect 50 0 51 1;
  195. #X connect 51 0 54 0;
  196. #X connect 52 0 49 0;
  197. #X connect 52 1 50 0;
  198. #X connect 53 0 101 0;
  199. #X connect 54 0 53 0;
  200. #X connect 54 1 53 1;
  201. #X connect 65 0 18 0;
  202. #X connect 66 0 26 0;
  203. #X connect 67 0 4 0;
  204. #X connect 68 0 12 0;
  205. #X connect 69 0 43 0;
  206. #X connect 71 0 72 0;
  207. #X connect 71 1 77 0;
  208. #X connect 73 0 71 0;
  209. #X connect 78 0 20 0;
  210. #X connect 79 0 6 0;
  211. #X connect 80 0 37 0;
  212. #X connect 81 0 14 0;
  213. #X connect 82 0 28 0;
  214. #X connect 83 0 40 0;
  215. #X connect 84 0 85 0;
  216. #X connect 86 0 87 0;
  217. #X connect 88 0 89 0;
  218. #X connect 90 0 91 0;
  219. #X connect 92 0 17 0;
  220. #X connect 93 0 25 0;
  221. #X connect 94 0 2 0;
  222. #X connect 95 0 3 0;
  223. #X connect 96 0 10 0;
  224. #X connect 97 0 11 0;
  225. #X connect 98 0 35 0;
  226. #X connect 99 0 39 0;
  227. #X connect 100 0 38 0;
  228. #X connect 103 0 104 0;
  229. #X connect 104 0 105 0;
  230. #X connect 105 0 106 0;
  231. #X connect 105 1 107 0;
  232. #X connect 106 0 107 0;
  233. #X connect 108 0 66 1;
  234. #X connect 109 0 65 1;
  235. #X connect 110 0 68 1;
  236. #X connect 111 0 69 1;
  237. #X connect 112 0 67 1;