资源简介
这是用java实现的多边形填充算法,是扫描线算法,按照课本上编写的,调试过,绝对没问题。
代码片段和文件信息
import java.awt.*;
import javax.swing.*;
import java.util.*;
public class FillPloy {
public static void main(String []args){
Jframe f=new Jframe(“扫描线算法“);
MyCanvas c=new MyCanvas();
f.add(c);
f.setSize(650650);
f.setVisible(true);
f.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
}
}
class Edge{
int x;
double dx;
int ymax;
}
class MyCanvas extends Canvas{
Vector v[];
Edge n[]=new Edge[6];
Edge m[]=new Edge[6];
Edge t=new Edge();
int x1x2xy;
int ijkl;
private Boolean add;
public MyCanvas(){
for(i=0;i<6;i++)
{
n[i]=new Edge();
m[i]=new Edge();
}
n[0].x=5;
n[0].dx=-3;
n[0].ymax=2;
n[1].x=5;
n[1].dx=3;
n[1].ymax=3;
n[2].x=2;
n[2].dx=0;
n[2].ymax=7;
n[3].x=11;
n[3].dx=0;
n[3].ymax=8;
n[4].x=5;
n[4].dx=2;
n[4].ymax=8;
n[5].x=5;
n[5].dx=-1.5;
n[5].ymax=7;
v=new Vector[9];
for(i=0;i<9;i++)
{
v[i]=new Vector();
}
Boolean add1=v[1].add(n[0]);
Boolean add2=v[1].add(n[1]);
Boolean add3=v[2].add(n[2]);
Boolean add4=v[3].add(n[3]);
Boolean add5=v[5].add(n[4]);
Boolean add6=v[5].add(n[5]);
k=0;
}
public void paint(Graphics g){
int flag=0;
this.setBackground(Color.white);
for(i=0;i<=11;i++)
{
x=10+50*i;
g.drawLine(x100x500);
}
for(j=0;j<=8;j++)
{
y=100+50*j;
g.drawLine(10y560y);
}
j=0;
g.setColor(Color.red);
g.drawLine(110150110400);
g.drawLine(110400260450);
g.drawLine(260450560350);
g.drawLine(560350560100);
g.drawLine(560100260250);
g.drawLine(260250110150);
if(j==0)this.repaint();
}
public void update(Graphics g){
k=0;
g.setColor(Color.blue);
for(int q=0;q<8;q++)
{
j++;
for(i=0;i m[k]=(Edge)v[j].get(i);
k++;
}
for(l=0;l for(i=l;i if(m[i].x>m[i+1].x){
t=m[i];
m[i]=m[i+1];
m[i+1]=t;
}
}
}
for(l=0;l if(m[l].x==m[l+1].x)
{
if(m[l].ymax==j&&m[l+1].ymax>j)
{
for(i=l;i {
m[i]=m[i+1];
}
k=k-1;
}
}
}
for(i=0;i {
x1=m[i].x;
x2=m[i+1].x;
while(x1<=x2)
{
x=x1*50+10-5;
y=500-j*50-5;
g.fillOval(xy1010);
x1++;
try{Thread.sleep(1000);}catch(Exception e){}
}
}
for(i=0;i {
if(m[i].ymax==j)
{
l=i;
while(l {
m[l]=m[l+1];
l++;
}
k--;
i=-1;
}
else if(m[i].ymax>j)
{
m[i].x=(int)(m[i].x+m[i].dx);
}
}
if(j==8)
break;
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2010-09-24 17:24 计算0801—1081220126赵晓森—2\
文件 2791 2010-09-24 14:24 计算0801—1081220126赵晓森—2\FillPloy.java
相关资源
- TFIDF算法mapreduce实现
- Matlab遗传算法求混合流水车间调度最
- 计算机网络_DV算法的实现与设计
- 协同过滤推荐算法java实现
- 小学生四则运算软件
- 基于RMI技术实现的书籍信息管理系统
- java运算符大全
- 计算机专业外文文献翻译
- RSA公钥加密算法Java实现
- IDEA算法(java)
- 有关于计算机JAVA经典的外文翻译
- JAVA基础编程练习题50题及经典算法9
- 计算机专业外文翻译(JAVA)
- 模拟退火算法程序c语言编程
- 银行家算法java实现带UI界面各个类文
- java计算器的实现--ppt课件
- java 简单算式计算器
- geohash算法mysql版代码
- 网上支付源代码和说明文档
- sm4国密算法 java实现
-
java实现Jfr
ame计算器 - Java语言迪杰斯特拉算法演示Eclipse环境
- SM2&SM3&SM4国密规范及Java软算法实现
- 玩转算法系列--数据结构精讲更适合
- 算法图解
- Java源程序之简易计算器的设计
- android 九点校准算法
- 克里金插值算法
- 完整的毕业设计java排课系统源代码
- CTF各种加密算法解密集成java,支持
评论
共有 条评论