答对追加80分~道格拉斯-普克与matlab
1个回答

function DouglasPeucker(PointList[], epsilon)

//Find the point with the maximum distance

dmax = 0

index = 0

for i = 2 to (length(PointList) - 1)

d = PerpendicularDistance(PointList[i], Line(PointList[1], PointList[end]))

if d > dmax

index = i

dmax = d

end

end

//If max distance is greater than epsilon, recursively simplify

if dmax >= epsilon

//Recursive call

recResults1[] = DouglasPeucker(PointList[1...index], epsilon)

recResults2[] = DouglasPeucker(PointList[index...end], epsilon)

// Build the result list

ResultList[] = {recResults1[1...end-1] recResults2[1...end]}

else

ResultList[] = {PointList[1], PointList[end]}

end

//Return the result

return ResultList[]

end