`
fuerbosi
  • 浏览: 463986 次
文章分类
社区版块
存档分类
最新评论

计算机图形学-边界标志算法-java实现

 
阅读更多

import javax.swing.JFrame;

public class BoundaryColor {
TwoDimen env;
public static void main(String args[]) {
new BoundaryColor();
}

public BoundaryColor() {
// A(3,15)B(18,30)C(33,15)D(15,3)
// AB BC CD DA
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];
}
/*for (y = ymin; y <= ymax - 1; y++) {
x = x + dx;
if (env.isFlag((int) x, (int) y)) {
env.setFlag((int) (x + 1), (int) y);
} else {
env.setFlag((int) x, (int) y);
}
}*/
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;
}
}
}

// ************************************
double maxx, maxy, minx, miny;
double x1, y1;
int in_flag = 0;
minx = X[0];
maxx = X[2];
miny = Y[3];
maxy = Y[1];
for (y1 = miny - 1; y1 <= maxy - 1; y1++) {
in_flag = 0;
for (x1 = minx - 1; x1 <= maxx - 1; x1++) {
if (env.isFlag((int) x1, (int) y1)) {
if (in_flag==0)
in_flag=1;
else
in_flag=0;
}
if(in_flag!=0)
env.drawPoint((int)x1,(int)y1);
else
env.cleanPoint((int)x1,(int)y1);
}
}
}
}

分享到:
评论

相关推荐

    计算机图形学边界标志算法

    绝对能运行的通,计算机图形学的边界标志算法。根据张彩明课本上的算法写的。

    计算机图形学算法的java代码

    计算机图形学java代码实现,有近20个实例。

    多边形填充算法java实现

    这是用java实现的多边形填充算法,是扫描线算法,按照课本上编写的,调试过,绝对没问题。

    基于JAVA的画图形学的设计

    在计算机的图形设备上实现真实感图形必须完成的四个基本任务。  1.... 寻求能准确地描述客观世界中各种现象与景观的数学模型,并逼真地再现这些现象与景观,是图形学的一个重要研究课题。很多自然景

    JAVA画图形学(LW+源代码).zip

    在计算机的图形设备上实现真实感图形必须完成的四个基本任务。  1. 三维场景的描述。三维造型。  2. 将三维几何描述转换成为二维透视图。透视变换。  3. 确定场景中的所有可见面。消隐算法,可见面探测算法。  4...

    JAVA画图形学(论文+源代码).rar

    在计算机的图形设备上实现真实感图形必须完成的四个基本任务。  1.... 寻求能准确地描述客观世界中各种现象与景观的数学模型,并逼真地再现这些现象与景观,是图形学的一个重要研究课题。很多自然

    JAVA+MYSQL真实感图形学系统(论文+源代码).zip

    自然景物模拟   在计算机的图形设备上实现真实感图形必须完成的四个基本任务。  1....三维造型。... 寻求能准确地描述客观世界中各种现象与景观的数学模型,并逼真地再现这些现象与景观,是图形学的一个

    Computer-Graphics-LB3

    计算机图形学-LB3 图形编辑器执行以下任务: 使用指定的区域操纵器集有两种方法:Top(多边形); 边界平滑。 填充此区域。 实施3种算法。

    JAVA万年历课程设计报告(1).doc

    课 程 设 计 "题 目 "万年历 " "学 院 "计算机科学与信息工程学院 " "专 业 "计算机科学与技术 " "班 级 "09网络 " "学生姓名 " " "指导教师 " " "2012 "年"7 "月"14 "日 " " " " " " " " 目 录 前言 3 1需求分析 3 ...

    易语言程序免安装版下载

     为实现静态编译,易语言编译器、核心支持库、集成开发环境(IDE)等均有重大更新,支持库开发架框有扩展性调整,绝大多数官方支持库都已针对静态编译完成自身改造并提供静态库。  目前绝大多数官方支持库均已支持...

    可以不用安装就使用的maple5

    现在通过这些软件可以满足这个需要,他不但推导公式,而且推导出计算数学的离散描述,进一步把算法翻译成 “C”语言、VB、Java,等各类计算机源程序, 从而避免了手编程序的繁杂和疏漏。 除此之外,还可以独立进而...

Global site tag (gtag.js) - Google Analytics