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