import javax.swing.JFrame;
public class FloodFill4 {
public static void main(String args[]){
new FloodFill4();
}
private TwoDimen env;
public FloodFill4(){
JFrame frame = new JFrame();
env = new TwoDimen();
frame.getContentPane().add(env);
frame.setBounds(100, 100, 600, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setVisible(true);
int[] X = new int[] { 3, 18, 33, 15, 3 };
int[] Y = new int[] { 15, 30, 15, 3, 15 };
int i = 0;
double x, y;
double dy, dx;
int ymin, ymax;
for (i = 0; i < X.length - 1; i++) {
//System.out.println(i);
dy = Y[i + 1] - Y[i];
if (dy != 0) {
dx = (X[i + 1] - X[i]) / dy;
if (dy > 0)
x = X[i];
else
x = X[i + 1];
if (Y[i] >= Y[i + 1]) {
ymin = Y[i + 1];
ymax = Y[i];
} else {
ymin = Y[i];
ymax = Y[i + 1];
}
int k,j;
k=Math.abs(X[i+1]-X[i]);
if(Math.abs(Y[i+1]-Y[i])>k)k=Math.abs(Y[i+1]-Y[i]);
dx=(float)(X[i+1]-X[i])/k;
dy=(float)(Y[i+1]-Y[i])/k;
x=(float)(X[i]);
y=(float)(Y[i]);
for(j=0;j<k;j++){
if (env.isFlag((int) (x+0.5), (int) (y+0.5))) {
env.setFlag((int) (x + 1.5), (int) (y+0.5));
} else {
env.setFlag((int) (x+0.5), (int) (y+0.5));
}
x=x+dx;
y=y+dy;
}
}
}
fill(15,15);
}
private void fill(int i, int j) {
if(!env.isFlag(i, j)&&!env.isFilled(i, j)){
env.drawPoint(i, j);
fill(i,j+1);
fill(i,j-1);
fill(i+1,j);
fill(i-1,j);
//fill(i+1,j+1);
//fill(i+1,j-1);
//fill(i-1,j+1);
//fill(i-1,j-1);
}
}
}
分享到:
相关推荐
计算机图形学--区域填充算法的实现.pdf
计算机图形学--区域填充算法的实现.doc
用C#实现的计算机图形学上的种子填充经典算法(VS2005),操作说明:鼠标的点击直接可以在界面上画出图形,点击选取种子点后,鼠标再点下的点就是种子点,就可以开始填充了
这是计算机图形学实验课用的种子填充算法,希望大家能够有用
计算机图形学 扫描线种子填充算法实现 1、初始化堆栈。 2、种子压入堆栈。 3、while(堆栈非空) { (1)从堆栈弹出种子象素。 (2)如果种子象素尚未填充,则: a.求出种子区段:xleft、xright; b.填充...
计算机图形学-种子填充-201205xxxXXX1
计算机图形学--用JAVA实现Bresenham算法画圆,注意画的是个整圆,而不是一段圆弧,同时加上了网格线
图形学-种子填充算法-C++
计算机图形学--第四讲 区域填充算法.pdf
计算机图形学 边界定义的8连通区域的种子填充算法 计算机图形学 边界定义的8连通区域的种子填充算法 计算机图形学 边界定义的8连通区域的种子填充算法
基于计算机图形学的bersenham算法的书上函数的一个实现,希望可以对同学们更好的理解算法思想有帮助
扫描下种子填充算法扫描下种子填充算法扫描下种子填充算法
计算机图形学有序边表填充算法.pdf计算机图形学有序边表填充算法.pdf计算机图形学有序边表填充算法.pdf计算机图形学有序边表填充算法.pdf计算机图形学有序边表填充算法.pdf
计算机图形学-三角形光栅化算法+实验报告版本,OpenGL实现VC++打开
计算机图形学的种子填充算法.........
种子填充算法实现(计算机图形学)版权归太原工业学院研究所所有
Win-TC2.0下编译,一些计算机图形学基础算法
实习作业,画线画圆种子填充算法在MFC工程中的实现,部分代码有引用
使用java编程 多边形画法:先选择画图中的多边形,然后在面板里单击鼠标左键,画点...扫描线种子填充的算法适合于任意图形,不会出现部分区域填补上的现象。 程序没有任何问题~ 有不明白的可以联系我~ qq:815366795~
计算机图形学--Bresenham完整算法-画直线、椭圆和圆.docx