0

これが配列の最初の要素なのか2番目の要素なのか、彼らが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の場合に実行する必要がありますか?

ありがとう

4

2 に答える 2

2

推測では、インデックス1が配列の最初の要素であるように見えます(そうでない場合、最初の要素はどこにもインデックス付けされません)。確実に伝えるための最良の方法は、おそらくそれを試すことです:)

于 2010-08-16T18:09:28.273 に答える
1

1インデックスです。次の行に注意してください。

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

と同様:

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

どちらもリストの最初からアクセスします。

于 2010-08-16T18:10:31.740 に答える