抽稀 Douglas Peucker演算法

2021-07-09 15:15:18 字數 2067 閱讀 8969

douglas-peucker演算法

在數位化過程中,需要對曲線進行取樣簡化,即在曲線上取有限個點,將其變為折線,並且能夠在一定程度

上保持原有的形狀。

經典的douglas-peucker演算法描述如下:

(1)在曲線首尾兩點a,b之間連線一條直線ab,該直線為曲線的弦;

(2)得到曲線上離該直線段距離最大的點c,計算其與ab的距離d;

(3)比較該距離與預先給定的閾值threshold的大小,如果小於threshold,則該直線段作為曲線的近似,該段曲線處理完畢。

(4)如果距離大於閾值,則用c將曲線分為兩段ac和bc,並分別對兩段取信進行1~3的處理。

(5)當所有曲線都處理完畢時,依次連線各個分割點形成的折線,即可以作為曲線的近似。

douglas-peucker演算法源**:

#include

#include

#include "douglaspeucker.h"

using namespace std;

void readin(vector &points,const char * filename)

}void douglaspeuckeralgorithm(vector &points,int

tolerance,const char*filename)

void dumpout1()

void dumpout2()

int main(int argc, const char *argv)

else

return 0;

}///

///

#ifndef douglagpeucker

#include

#include

using namespace std;

struct mypointstruct // 點的結構

;mypointstruct(double x, double y, double z) // 點的建構函式

;~mypointstruct(){};

};class douglaspeucker

;douglaspeucker(vector &points,int tolerance);

~douglaspeucker(){};

void writedata(const char *filename);

private:

void douglaspeuckerreduction(int firstpoint, int lastpoint, double

tolerance);

double perpendiculardistance(mypointstruct &point1, mypointstruct

&point2, mypointstruct &point3);

mypointstruct myconvert(int index);

};#define douglagpeucker

#endif

////////

#include "douglaspeucker.h"

double douglaspeucker::perpendiculardistance(mypointstruct &point1,

mypointstruct &point2, mypointstruct &point3)

mypointstruct douglaspeucker::myconvert(int index)

void douglaspeucker::douglaspeuckerreduction(int firstpoint, int

lastpoint, double tolerance)

}if (maxdistance > tolerance && indexfarthest != 0) 

}douglaspeucker::douglaspeucker(vector &points,int

tolerance)

}void douglaspeucker::writedata(const char *filename)}複製

去google翻譯

翻譯結果

Douglas Peucker演算法 抽稀曲線上的點

douglas peucker演算法 在數位化過程中,需要對曲線進行取樣簡化,即在曲線上取有限個點,將其變為折線,並且能夠在一定程度 上保持原有的形狀。經典的douglas peucker演算法描述如下 1 在曲線首尾兩點a,b之間連線一條直線ab,該直線為曲線的弦 2 得到曲線上離該直線段距離最大...

基於ArcGIS的點抽稀方法總結

一 牽引線抽稀法 利用arcgis的高階智慧型標註引擎maplex的牽引線進行標註。將符號作為註記顯示,把符號和註記綁在一起,通過閾值自動進行標註間避讓,計算出地圖上所有標註的最佳位置放置,達到抽稀的目的。能顯示出註記的,那麼該點的符號也跟隨顯示出,如不能顯示出註記的,則該點的符號也不顯示。有效避免...

Python實現曲線點抽稀演算法的示例

本文介紹了python實現曲線點抽稀演算法的示例,分享給大家,具體如下 目錄 正文 何為抽稀 在處理向量化資料時,記錄中往往會有很多重複資料,對進一步資料處理帶來諸多不便。多餘的資料一方面浪費了較多的儲存空間,另一方面造成所要表達的圖形不光滑或不符合標準。因此要通過某種規則,在保證向量曲線形狀不變的...