[Tutor] reducing a list evenly when deleting elements by index
Pete O'Connell
pedrooconnell at gmail.com
Mon Sep 17 03:15:14 CEST 2012
Hi, I have a bezier line with 20 points on it and I am trying to reduce
this to a line with 4 points, keeping the first and last points and 2
evenly spaced points in between like so:
*....................*
becomes:
*. . . .*
These points are removable only by index, so if I remove point 2,
point 3 then becomes point 2 in the next iteration, so I end up having a
spacing like this which is not what I want:
*. . . .*
Here is the code that I have so far. I hope it makes sense:
##############################################################################################
for aNode in nuke.allNodes():
if aNode.shown():
theRotoNode = aNode
curveKnob = theRotoNode['curves']
rootLayer = curveKnob.rootLayer
theNumberOfPointToReduceTo = 5
for aShape in rootLayer:
theOriginalShape = aShape
thePointList = []
for aPoint in aShape:
thePointList.append(aPoint)
if len(thePointList) > 5:
theNumberOfPoints = len(thePointList)
keepEvery = float(theNumberOfPoints)/theNumberOfPointToReduceTo
theIndicesToKeep = []
theIndicesToKeep.append(0)
theIndicesToKeep.append(1)
for i in range(theNumberOfPoints)[1:-1]:
if i*keepEvery < theNumberOfPoints:
theIndicesToKeep.append(int(round(i*keepEvery)))
theIndicesToKeep.append(theNumberOfPoints-2)
theIndicesToKeep.append(theNumberOfPoints-1)
thePointsToRemove = tuple(set(range(theNumberOfPoints)) -
set(theIndicesToKeep))
#everything is good up to here, the code below doesn't work
properly and I'm kinda stuck
counter = -1
for aPointIndex in thePointsToRemove:
counter+=1
aPointIndex = aPointIndex-(counter)
print aPointIndex
aShape.remove(aPointIndex)
############################################################################################
Any advice would be greatly appreciated.
Pete
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20120917/b35ed95e/attachment.html>
More information about the Tutor
mailing list