//垂距法的子程序 Macro "Offset" (pts, tol) star = 1 //定义起始位置 ret: //如果未检查的点少于两个则不再检查,返回点数组 if (pts.length - star) < 2 then do return(pts) end //顺序拾取三点执行检查 ,计算中间点到两端点连线的垂距 dist = GetLineDistance(pts[star+1], {pts[star],pts[star+2]}) if dist[1] < tol then do //如果垂距小于限差,则可去除这个点 pts = ExcludeArrayElements(pts, star+1, 1) end else do //否则保留该点,将检查点下移一位 star = star+1 end goto ret //调回函数开头,继续执行下一步检查 endMacro