# some dummy geometry generation
def build_vertices():
result = []
for i in xrange(255):
for j in xrange(255):
result.append( (i, j, 0) )
result.append( (i+1, j, 0) )
result.append( (i, j+1, 0) )
result.append( (i+1, j, 0) )
result.append( (i+1, j+1, 0) )
result.append( (i, j+1, 0) )
return result
# the actual algorithm
import time
src_vertices = build_vertices()
print "filtering..."
t0 = time.time()
# filter unique vertices using a 'dict' and create indices
vert_dict = dict()
indices = []
new_index = 0
for vert in src_vertices:
index = vert_dict.get(vert, None)
if index is None:
index = new_index
new_index += 1
vert_dict[vert] = index
indices.append(index)
# create an 'array' of unique vertices out of the dict
new_vertices = [None] * len(vert_dict)
for vert, index in vert_dict.iteritems():
new_vertices[index] = vert
t1 = time.time()
print " ", t1-t0, "sec."
print "%d vertices => %d vertices, %d indices" % (len(src_vertices), len(new_vertices), len(indices))