namespace dog
public
struct line
public line parameter
(mypoint p1,
mypoint p2)
public
double
distance
(mypoint dot, line cs)
public
form1()
private
void
form1_load
(object sender,
eventargs e)
list inpoint =
newlist
<
mypoint
>()
;//開啟檔案
public
void
button1_click_1
(object sender,
eventargs e)
//} sr.
dispose()
; fs.
dispose()
;}}//畫出壓縮前影象
public
void
button3_click
(object sender,
eventargs e)
for(
int i =
0; i < inpoint.count; i++
) chart1.series[0]
.charttype = seriescharttype.line;
}//畫出壓縮後影象
public
void
button2_click
(object sender,
eventargs e)
do(inpoint,d)
;for
(int i =
0; i < outpoint.count; i++
) chart2.series[0]
.charttype = seriescharttype.line;
}//執行
public
void
do(list inpoint,
double d)
list outpoint =
newlist
<
mypoint
>()
;//道格拉斯壓縮
private
void
douglas
(list inpoints,
int n1,
int n2,
double d)
else}if
(max ==0)
//如果最大值距離小於閾值直接返回首位
else
if(n1 +
1== max && n2 -
2!= max)
//第二個點為最大距離
else
if(n2 -
2== max && n1 +
1!= max)
//倒數第二個點為最大距離
else
if(n1 +
1== max && n2 -
2== max)
//夾中間
else}}
}//待處理的點集
public
class
mypoint
public
double y
}//線集
}
道格拉斯 普克演算法
該演算法也以douglas peucker演算法和迭代終點擬合演算法為名。演算法的目的是給出由線段組成的曲線 在某些上下文中也稱為折線 以找到具有較少點的相似曲線。該演算法基於原始曲線和簡化曲線 即曲線之間的豪斯多夫距離 之間的最大距離定義 不相似 簡化曲線由定義原始曲線的點的子集組成。演算法描述如...
道格拉斯 普克演算法
意圖 是將曲線近似表示為一系列點,並減少點的數量的一種演算法。它的優點是具有平移和旋轉不變性,給定曲線與閾值後,抽樣結果一定。具體步驟 1 在曲線首尾兩點間虛連一條直線,求出其餘各點到該直線的距離,如右圖 1 2 選其最大者與閾值相比較,若大於閾值,則離該直線距離最大的點保留,否則將直線兩端點間各點...
一種改進的道格拉斯 普克演算法以及C 實現
分類 地圖 地理資料 2012 05 10 21 55 1431人閱讀收藏 舉報演算法 douglas一peukcer演算法由d.douglas和t.peueker於1973年提出,簡稱d一p演算法,是目前公認的線狀要素化簡經典演算法。現有的線化簡演算法中,有相當一部分都是在該演算法基礎上進行改進產...