道格拉斯普克演算法
發布時間: 2022-08-15 00:23:20
A. 急需道格拉斯-普克演算法的C#代碼,求大神給我
開源代碼下載
http://www.codeproject.com/Articles/18936/A-C-Implementation-of-Douglas-Peucker-Line-Approxi
B. 怎麼用棧的方法編寫道格拉斯-普克演算法啊
下面的代碼,用vector作了一個棧,避免了大數據遞歸時刻能出現的stack overflow問題;
用到的都是標準的C++ 及STL的東西,VC++下面沒有問題。
只是一個演示,很多保護和檢驗都沒有作;
輸入數據格式: x y -- 一行; 輸出: x0 y0 x1 y1 (x0, y0 - 原始數據;r1, y1-rdp後的數據,一般少於x0,y0的數據)
這只是【代碼片段】及輸出部分。完整的程序我發到『網盤』上了,提取見『私信』。
...
typedefstructPOINT
{
doublex;
doubley;
}Point;
typedefstructSTACKELEMENT
{
Pointpoint;
size_tindex;
}StackElement;
...
vector<StackElement>rdp_stack;
...
intrdp_fit(constvector<Point>&input,vector<Point>&output,doubleepsilon)
{
output.resize(0);
if(input.empty())return-1;
rdp_stack.resize(0);//clearbeforeusing.
//.
rdp_stack.reserve(input.size());
output.reserve(input.size());
//initialstart~endpointforrdp.
Pointstart=input.front();
size_tindex_start=0;
Pointend=input.back();
size_tindex_end=input.size()-1;
//addthefirstpoint
output.push_back(start);
StackElementstack_element={end,index_end};
rdp_stack.push_back(stack_element);
while(!rdp_stack.empty())
{
doublemax_perpendicular_distance=0.0;
Pointfarthest=start;
size_tindex_of_farthest=index_start;
//
for(size_ti=index_start+1;i<index_end;++i)
{
constdoubleperpendicular_distance=getDistanceToLine(input[i],start,end);
if(perpendicular_distance>max_perpendicular_distance)
{
...
}
}
if(max_perpendicular_distance<=epsilon)
{
...
}
else
{
...
}
}
return0;
}
intmain(intargc,charconst*argv[])
{
doubletolerance=0.02;//hard-codingepilson.<==modify
charinfile[]="rdp_data.in";//inputfile.<==modify
charoutfile[]="rdp_data.out";//outputfile.<==modify
vector<Point>raw_data,rdp_data;
loadData(infile,raw_data);
intretcode;
...
retcode=rdp_fit(raw_data,rdp_data,tolerance);
saveData(outfile,raw_data,rdp_data);
...
return0;
}
輸出:
.
圖:
C. 道格拉斯-普克演算法的介紹
道格拉斯-普克演算法1(Douglas–Peucker algorithm,亦稱為拉默-道格拉斯-普克演算法、迭代適應點演算法、分裂與合並演算法)是將曲線近似表示為一系列點,並減少點的數量的一種演算法。它的優點是具有平移和旋轉不變性,給定曲線與閾值後,抽樣結果一定。
D. 有沒有人能給我道格拉斯普克演算法VB源碼
http://download.csdn.net/download/ddddddadw/5924815 希望對你有用~~
E. AO+C# 道格拉斯演算法
聽不懂你說的。。我也想用AO+C#做道格拉斯演算法。但是現在還沒有開始,現在只是簡單的用VS2008,在pictureBox裡面實現了。
熱點內容