運用八連通邊界填充演算法
進行多邊形的填充 (
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。網路中的任何一台計算機都可以通過網路直接 或者間接訪問同乙個網路中其他任意一台計算機。給...