Re: FindCurvePath has a problem
- To: mathgroup at smc.vnet.net
- Subject: [mg127440] Re: FindCurvePath has a problem
- From: Dana DeLouis <dana01 at me.com>
- Date: Wed, 25 Jul 2012 02:32:15 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: mathgroup-newout@smc.vnet.net
- Delivered-to: mathgroup-newsend@smc.vnet.net
Hi. Don't have a suggestion, but an observation. It appears one can get a solution by either dropping the first item, or the last 2 items. v = {Your Data Here} Length[v] 84 Here, I can get a solution by only dropping the last 2 items. Complement is used to display those points that were not in the solution (of the first 82) p=FindCurvePath[v[[;;82]]]; Complement[Range@82,Flatten[p]] {13,18,23,24,49,51,52,53,54,58,59,74,75,79,80} Here, only the first point is dropped. p=FindCurvePath[v[[2;;]]]; Complement[Range@83,Flatten[p]]+1 {13,18,23,24,49,51,52,53,54,58,59,74,75,79,80,81,82} Note: +1 added above to get it's position in the original list. There appears to be common points that the function wants to drop. Interesting Function. Here's a half circle, with a point added that is slightly on the way back to the origin. m=Table[{Cos[t],Sin[t]},{t,0,2Pi,Pi/16}] [[;;17]]; AppendTo[m,{-0.99,-0.01}]; FindCurvePath[m] {{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18}} The path is from 1 to 18. Here's the same half circle, with the last point increased to -.02. m=Table[{Cos[t],Sin[t]},{t,0,2Pi,Pi/16}] [[;;17]]; AppendTo[m,{-0.99,-0.02}]; Now, we get a curve path back to the starting point. Wonder why it starts at point 2, and not just point 1 ?? FindCurvePath[m] {{2,1,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2}} ListLinePlot[m,AspectRatio->Automatic] = = = = = = = = = = Dana DeLouis Mac & Math 8 = = = = = = = = = = On Jul 20, 3:52 am, Ralph Dratman <ralph.drat... at gmail.com> wrote: > The following input to FindCurvePath produces the output shown below it: > > FindCurvePath[{{278,141},{279,141},{279,142},{279,143},{280,143},{280,144}, > {280,145},{280,146},{281,147},{281,148},{281,149},{281,150},{282,150},{282, > 151},{282,152},{283,151},{283,152},{283,153},{284,153},{284,154},{285,155}, > {286,155},{286,156},{287,156},{287,157},{288,157},{289,156},{290,156},{290, > 157},{291,156},{291,157},{292,156},{292,157},{293,156},{293,157},{294,156}, > {294,157},{295,156},{295,157},{296,156},{296,157},{297,156},{297,157},{298, > 155},{298,156},{299,155},{299,156},{300,155},{301,154},{301,155},{302,153}, > {302,154},{303,152},{303,153},{304,150},{304,151},{304,152},{305,149},{305, > 150},{306,146},{306,147},(*{306,148},{306,149},{307,144},{307,145},{307,146},{308,141},{308,142},{308,143},{308,144},{309,139},{309,140},{309,141},{31 > > 0,138},{310,139},{311,136},{311,137},{311,138},{312,135},{312,136},{313,134},{313,135},*){314,133},{314,134}}] > > FindCurvePath::ntri: The data generates an inconsistent > triangulation. You can perturb the data to make it valid. >> > Fail > > If you restore the commented-out list elements (beginning with > (*{306,148}...), then evaluate, you get an apparently never-ending > silent hangup, which is of course far worse than an error message. > > I have not yet tried to "perturb" anything to work around the problem. > Clearly the function needs to check its arguments before wandering off > into lala land. > > Ralph Dratman