道格拉斯普克算法
发布时间: 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里面实现了。
热点内容