if(dist != 0)
/* this gives length = first copy start to last copy end
add a tiny offset for floating point rounding errors */
count = (length + 0.00001) / dist;
else
/* if the offset has no translation, just make one copy */
count = 1;
}
if(count < 1)
count = 1;
/* allocate memory for count duplicates (including original) */
result = CDDM_from_template(dm, dm->getNumVerts(dm) * count,
dm->getNumEdges(dm) * count,
dm->getNumFaces(dm) * count);
/* calculate the offset matrix of the final copy (for merging) */
MTC_Mat4One(final_offset);
for(j=0; j < count - 1; j++) {
MTC_Mat4MulMat4(tmp_mat, final_offset, offset);
MTC_Mat4CpyMat4(final_offset, tmp_mat);
}