Intersection of polygons and more
- To: mathgroup at smc.vnet.net
- Subject: [mg30378] Intersection of polygons and more
- From: WizardPaul at aol.com
- Date: Tue, 14 Aug 2001 03:45:29 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
I'm trying to devise a fast way to intersect polygons. For example, if I have: poly1 = Table[{0.6 + Cos[2 + Cos[t]]*Sin[t/3], Sin[t/3]*Sin[2 + Cos[t]] - 0.2}, {t, Pi/2, (5/2)*Pi, 0.2}] poly2 = Table[{0.8 Cos[t], 0.8 Sin[t]}, {t, 4, 4 + 2Pi, 0.2}] What's the fastest way to get something like this?: {{0.391927, 0.254649}, {0.472822, 0.341857}, {0.57571, 0.410207}, {0.664196, 0.445919}, {0.603122, 0.525589}, {0.486681, 0.634934}, {0.350838, 0.718966}, {0.288021, 0.746354}, {0.131601, 0.683303}, {-0.0301305, 0.571709}, {-0.156521, 0.43601}, {-0.242242, 0.293184}, {-0.289192, 0.160103}, {-0.304406, 0.0503182}, {-0.296871, -0.0275226}, {-0.274492, -0.0697097}, {-0.242073, -0.0766683}, {-0.200641, -0.0520995}, {-0.148065, -0.00248934}, {-0.0806987, 0.0631007}, {0.00436518, 0.133429}, {0.107061, 0.196173}, {0.222934, 0.239917}, {0.343236, 0.256572}} Notice the addition of points {0.288021, 0.746354} and {0.664196, 0.445919}. Since they are very closely related functions, how about for subtraction: {{0.664196, 0.445919}, {0.57571, 0.410207}, {0.472822, 0.341857}, {0.391927, 0.254649}, {0.343236, 0.256572}, {0.222934, 0.239917}, {0.107061, 0.196173}, {0.00436518, 0.133429}, {-0.0806987, 0.0631007}, {-0.148065, -0.00248934}, {-0.200641, -0.0520995}, {-0.242073, -0.0766683}, {-0.274492, -0.0697097}, {-0.296871, -0.0275226}, {-0.304406, 0.0503182}, {-0.289192, 0.160103}, {-0.242242, 0.293184}, {-0.156521, 0.43601}, {-0.0301305, 0.571709}, {0.131601, 0.683303}, {0.288021, 0.746354}, {0.201008, 0.774336}, {0.0431643, 0.798835}, {-0.1164, 0.791487}, {-0.271324, 0.752584}, {-0.415431, 0.683679}, {-0.542976, 0.587518}, {-0.648874, 0.467934}, {-0.728904, 0.329695}, {-0.779875, 0.178312}, {-0.799754, 0.0198203}, {-0.78775, -0.139461}, {-0.744341, -0.293183}, {-0.671257, -0.435217}, {-0.571413, -0.5599}, {-0.522915, -0.605442}, {-0.392209, -0.697261}, {-0.245866, -0.761282}, {-0.089722, -0.794953}, {0.0699992, -0.796932}, {0.22693, -0.767139}, {0.374813, -0.706764}, {0.507754, -0.618212}, {0.620453, -0.505013}, {0.708416, -0.371682}, {0.768136, -0.223532}, {0.797234, -0.0664715}, {0.794548, 0.0932394}, {0.760186, 0.249233}, {0.695518, 0.395291}} and addition (union): {{0.664196, 0.445919}, {0.689398, 0.456023}, {0.801922, 0.481245}, {0.902855, 0.492509}, {0.984458, 0.499028}, {1.0415, 0.510113}, {1.07021, 0.532997}, {1.06716, 0.571203}, {1.02882, 0.623506}, {0.952175, 0.683546}, {0.836368, 0.74035}, {0.68479, 0.780088}, {0.506533, 0.789118}, {0.316201, 0.757722}, {0.288021, 0.746354}, {0.201008, 0.774336}, {0.0431643, 0.798835}, {-0.1164, 0.791487}, {-0.271324, 0.752584}, {-0.415431, 0.683679}, {-0.542976, 0.587518}, {-0.648874, 0.467934}, {-0.728904, 0.329695}, {-0.779875, 0.178312}, {-0.799754, 0.0198203}, {-0.78775, -0.139461}, {-0.744341, -0.293183}, {-0.671257, -0.435217}, {-0.571413, -0.5599}, {-0.522915, -0.605442}, {-0.392209, -0.697261}, {-0.245866, -0.761282}, {-0.089722, -0.794953}, {0.0699992, -0.796932}, {0.22693, -0.767139}, {0.374813, -0.706764}, {0.507754, -0.618212}, {0.620453, -0.505013}, {0.708416, -0.371682}, {0.768136, -0.223532}, {0.797234, -0.0664715}, {0.794548, 0.0932394}, {0.760186, 0.249233}, {0.695518, 0.395291}} Again with the additional points {0.288021, 0.746354} and {0.664196, 0.445919}. Exclusion would also be useful. Those two added points in each case are simply "eyeballed" points of intersection. Lastly, is it possible to do similar (boolean) operations on parametrically described shapes? Thanks, Paul