Этот псевдокод предполагает нулевой индекс? - PullRequest
0 голосов
/ 16 августа 2010

Я не уверен, если, когда они пишут 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?

Спасибо

Ответы [ 2 ]

2 голосов
/ 16 августа 2010

Похоже, что индекс 1 является первым элементом в массиве (в противном случае первый элемент никогда нигде не индексируется).Лучший способ сказать наверняка, вероятно, попробовать это:)

1 голос
/ 16 августа 2010

Это 1-индексированный. Обратите внимание на строку:

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

а также:

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

Оба доступа с начала списка.

...