8連通 4連通的洪氾填充以及邊界填

2021-06-18 01:30:34 字數 1700 閱讀 7775

運用八連通邊界填充演算法

進行多邊形的填充 (

1)首先通過顏色混合的方式形成乙個圖形包中函式的對多邊形的填充,如下圖所示:

【注】主要**如下:

//實現多邊形的簡單填充

#include

#include

void init (void)

void linesegment (void)

int main (int argc, char** argv)

(2)通過8連通邊界填充演算法進行填充多邊形,多邊形邊界使用

4倍線寬。

【注】主要**如下:

void boundaryfill8(int x, int y,color fillcolor,color bordercolor)

} (

3)通過4連通洪氾填充演算法進行填充多邊形,多邊形邊界使用

4倍線寬。

【注】主要**如下:

//實現多邊形的簡單填充

#include

#include

#include

typedef  float color[3];

bool rgbcolorequal(color c1,color c2)

void setpixel(glint x,  glint y)

void getpixel(glint x, glint y, color c)

void boundaryfill4(int x, int y,color fillcolor,color bordercolor)}

void floudfill4(int x, int y,color fillcolor,color initcolor)}

void boundaryfill8(int x, int y,color fillcolor,color bordercolor)}

void init(void)

void draw(void)

,b=;

glclear(gl_color_buffer_bit);

gllinewidth(4.0);

glviewport(0,0,200,200);

glcolor3fv(b);

glbegin(gl_line_loop);

glvertex2i(90, 40);

glvertex2i(120, 100);

glvertex2i(90, 160);

glvertex2i(60, 160);

glvertex2i(60, 40);

glend();

glcolor3fv(a);

boundaryfill4(70,60,a,b);

glviewport(200,0,200,200);

glcolor3fv(b);

glbegin(gl_polygon);

glvertex2i(90, 40);

glvertex2i(120, 100);

glvertex2i(90, 160);

glvertex2i(60, 160);

glvertex2i(60, 40);

glend();

glcolor3fv(a);

floudfill4(70,60,a,b);

glflush();

}int main(int argc, char *argv)

八連通填充演算法

最近做了個圈地的遊戲,根據玩家行走路徑和自己的領地區域圈出自己的新領地。自己在演算法這方面比較薄弱,這次也趁機修煉了一波,寫下自己的心得和感悟在這裡。可能寫的不好,希望看到的僅供參考,不足之處和錯誤之處多謝指正。八連通演算法其實就是給定乙個種子點,通過迴圈查詢以自己為中心的3 3其他八個點,滿足要求...

837 連通塊中點的數量

給定乙個包含n個點 編號為1 n 的無向圖,初始時圖中沒有邊。現在要進行m個操作,操作共有三種 c a b 在點a和點b之間連一條邊,a和b可能相等 q1 a b 詢問點a和點b是否在同乙個連通塊中,a和b可能相等 q2 a 詢問點a所在連通塊中點的數量 輸入格式 第一行輸入整數n和m。接下來m行,...

1319 連通網路的操作次數

1319 連通網路的操作次數 用乙太網線纜將 n 臺計算機連線成乙個網路,計算機的編號從 0 到 n 1。線纜用 connections 表示,其中 connections i a,b 連線了計算機 a 和 b。網路中的任何一台計算機都可以通過網路直接 或者間接訪問同乙個網路中其他任意一台計算機。給...