剥猫皮的方法很多。请注意,测试浮点是否相等(比较边界框大小比率时所做的操作相当危险(请参见示例)
comparing float values
如果你想保留那张支票)。例如,可以按大小进行分组:
objsByNumFaces = for obj in geometry where canConvertTo obj mesh collect
(
local snapshot = snapshotAsMesh obj
local data = dataPair obj:obj numFaces:snapshot.numFaces
delete snapshot
data
)
qsort objsByNumFaces (fn _ x y = x.numFaces - y.numFaces)
counter = 0
prevCount = -1
objsPartitioned = #()
for pair in objsByNumFaces do
(
if pair.numFaces == prevCount then
append objsPartitioned[objsPartitioned.count] pair.obj
else
(
prevCount = pair.numFaces
append objsPartitioned #(pair.obj)
)
)
objsPartitioned
然后,阵列将包含按面数分组的对象。