[SciPy-User] Scipy.spatial.Delaunay
Dan Richards
D.Richards at mmu.ac.uk
Wed Mar 16 15:22:24 EDT 2011
Hi Pauli,
Thanks for your quick reply, I really appreciate the help.
I am still a little confused as to how the points, vertices and neighbors
relate to one another. Perhaps I can explain how I understand them and you
can correct me?
When I type x.vertices I get an array that has values for each index:
>>>x.vertices
array([[6, 4, 5, 9],
[8, 6, 4, 5],
[8, 1, 4, 7],
[8, 1, 6, 4],
[3, 6, 4, 9]...])
Do these numbers [w,x,y,z] represent a triangulation whereby the connections
are as follows?:
w-x
x-y
y-z
w-y
w-z
Your code did seem to work well, although I added an extra line which I
assume should have been there?
edges = []
for i in xrange(x.nsimplex):
edges.append((x.vertices[i,0], x.vertices[i,1]))
edges.append((x.vertices[i,1], x.vertices[i,2]))
edges.append((x.vertices[i,2], x.vertices[i,3])) # New line here
edges.append((x.vertices[i,3], x.vertices[i,0]))
The confusion on my part is that I expected the vertices to hold three
indices relating to the points of a triangle so I am confused as to how to
interpret the four values?
Equally with the neighbors, could you tell me what the four indices define?
>>>x.neighbors
array([[-1, -1, 1, 6],
[ 0, 2, 54, 9],
[-1, 1, 19, 4],
[12, 27, 31, 10],
[ 2, 5, 13, 44]...])
Many Thanks,
Dan
The edges are recorded in the `vertices` array, which contains indices of
the points making up each triangle. The overall structure is recorded
`neighbors`.
This is maybe easiest to explain in code. The set of edges is:
edges = []
for i in xrange(x.nsimplex):
edges.append((x.vertices[i,0], x.vertices[i,1]))
edges.append((x.vertices[i,1], x.vertices[i,2]))
edges.append((x.vertices[i,2], x.vertices[i,0]))
This however counts each edge multiple times. To get around, that:
edges = []
for i in xrange(x.nsimplex):
if i > x.neighbors[i,2]:
edges.append((x.vertices[i,0], x.vertices[i,1]))
if i > x.neighbors[i,0]:
edges.append((x.vertices[i,1], x.vertices[i,2]))
if i > x.neighbors[i,1]:
edges.append((x.vertices[i,2], x.vertices[i,0]))
This counts each edge only once. Note how the `neighbors` array relates
to `vertices`: its j-th entry gives the neighboring triangle on the
other side of the edge formed that remains after the j-th vertex is
removed from the triangle.
--
Pauli Virtanen
_______________________________________________
SciPy-User mailing list
SciPy-User at scipy.org
http://mail.scipy.org/mailman/listinfo/scipy-user
"Before acting on this email or opening any attachments you should read the Manchester Metropolitan University email disclaimer available on its website http://www.mmu.ac.uk/emaildisclaimer "
More information about the SciPy-User
mailing list