Parsing polygon lists
- To: mathgroup at smc.vnet.net
- Subject: [mg8963] Parsing polygon lists
- From: Russell Towle <rustybel at foothill.net>
- Date: Mon, 6 Oct 1997 01:59:32 -0400
- Sender: owner-wri-mathgroup at wolfram.com
Hi all,
I wish to optimize the task of, given a large list of polygons in 3-space,
some of which may fall into coincidence in pairs, to delete any such pairs
from the list. The polygons are lists of vertices, and each vertex is a
list of three real numbers.
My current method is as follows, using a function "facent" which finds the
centers of polygons:
1. Find the centers of each polygon in the list 'a':
centfaces = Map[ facent[#]&, a];(*no problem here*)
2. Find the positions in the list of face centers wherein one face center
equals another:
qaz = Table[ Position[ centfaces, x_ /; x==centfaces[[i]] ], {i, Length[ a
]} ];(*slow*)
3. Drop the duplicate pairs:
red = Flatten[ DeleteCases[ qaz, x_ /; Length[ x ]==2] ];(*OK as is*)
After step (3), I can construct a new list of polygons by writing a[[red]].
The main problem is step (2), which is terribly slow. At times the number
of polygons may exceed three or four thousand or more. I am using version
2.2.2.
Russell Towle
Giant Gap Press: books on California history, digital topographic maps
P.O. Box 141
Dutch Flat, California 95714
------------------------------
Voice: (916) 389-2872
e-mail: rustybel at foothill.net
------------------------------