Re: DelaunayTriangulation[] output
- To: mathgroup at smc.vnet.net
- Subject: [mg83231] Re: DelaunayTriangulation[] output
- From: "Steve Luttrell" <steve at _removemefirst_luttrell.org.uk>
- Date: Thu, 15 Nov 2007 05:45:50 -0500 (EST)
- References: <fhegn1$m6p$1@smc.vnet.net>
Here is one way of doing approximately what you want based on the documentation for the Computational Geometry Package. Set up the package and an example set of data. << ComputationalGeometry` data2D={{4.4,14},{6.7,15.25},{6.9,12.8},{2.1,11.1},{9.5,14.9},{13.2,11.9},{10.3,12.3},{6.8,9.5},{3.3,7.7},{0.6,5.1},{5.3,2.4},{8.45,4.7},{11.5,9.6},{13.8,7.3},{12.9,3.1},{11,1.1}}; delval=DelaunayTriangulation[data2D]; Here is my quick and dirty extraction of triangles. I take each adjacency list and partition it into overlapping pairs, then prepend the reference node to form a triple, then sort the resulting triple (in preparation for the Union later), then flatten all these triples into a flat list of triples, then do a Union to eliminate common triples, leaving you with a list of triples that are the triangles that you wanted. triangles=Flatten[Map[MapThread[(Prepend[#2,#1]//Sort)&,{Table[#[[1]],{Length[#[[2]]]}],Partition[#[[2]],2,1,{1,1}]}]&,delval],1]//Union Compare the graphics in the following two outputs: PlanarGraphPlot[data2D] Graphics[GraphicsComplex[data2D,Line[triangles]]] You see that the results are nearly the same except at the boundary. I hope this gets you near to what you wanted. Steve Luttrell West Malvern "Dominick" <pd20012000 at yahoo.com> wrote in message news:fhegn1$m6p$1 at smc.vnet.net... > Hi guys I was wondering if you could help me with a > couple of problems im having. I'm writing a program > that when given two images it creates a morph in between them.The > algorithm im implementing uses control points i choose on the image and > them triangulates the the images using those control points.I then use the > subsquent triangles to create a 1 to 1 correspondance between the 2 > images. Im using the DelaunayTriangulation[] command to do the > triangulation for me.Well my problem is the output of > DelaunayTriangulation. I need a triangle list ie; > > > i j k > 1 5 2 > 2 3 7 > . . . > > > where i,j,k are the vertices of the triangle > but DelaunayTriangulation outputs an adjacency list ie > > > > { {i,{points that are connected to i},..} > > > I was wondering if anyone knew how to convert this list to the triangle > based list i need.If i get this figured out then 90%+ of the program is > done.I appreciate any help. >