如果这是数组中的第一个或第二个元素,我不确定它们是否写入1:
function DouglasPeucker(PointList[], epsilon)
//Find the point with the maximum distance
dmax = 0
index = 0
for i = 2 to (length(PointList) - 1)
d = OrthogonalDistance(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
例如,我在c ++中实现这个,所以在i = 2的情况下,我应该为int i = 1做什么?
由于
答案 0 :(得分:2)
猜测,看起来索引1是数组中的第一个元素(否则第一个元素永远不会被索引到任何地方)。尽管如此,最好的方法是尝试它:)
答案 1 :(得分:1)
它是1索引的。注意这一行:
recResults1[] = DouglasPeucker(PointList[1...index], epsilon)
以及:
ResultList[] = {recResults1[1...end-1] recResults2[1...end]}
从列表的开头进行访问。