C 實現道格拉斯 普克演算法設計

2021-10-10 19:05:44 字數 1844 閱讀 3511

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演算法,是目前公認的線狀要素化簡經典演算法。現有的線化簡演算法中,有相當一部分都是在該演算法基礎上進行改進產...