资源简介
Java实现图结点着色图形化演示,里面包含完整源代码,是学习算法设计不可多得的好材料,各位亲,心动不如行动啊,赶快下载吧!
代码片段和文件信息
import java.awt.Color;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.List;
/**
* 实现作图和对点着色的算法
* @author zzx
*
*/
public class DuoBianXing {
private int startX;// 顶点的X坐标
private int startY;// 顶点的Y坐标
private int r;// 外接圆的半径
List ps = new ArrayList();
List ls = new ArrayList();
PaintColor pc;
public DuoBianXing( PaintColor pc) {
this.pc = pc;
startX = 400;
startY = 10;
r = 200;
}
/**
* 确定每个点的位置
* @param size 顶点的个数(多边形的边数)
*/
public void posOfPoint(int size) {
ps.add(new Point(startXstartYColor.RED pc));
Point p;
for (int i = 1; i < size; i++) {
p = nextPoint(((2 * Math.PI) / size) * i);
ps.add(p);
}
}
/**
* 在顶点处建立直角坐标系,用r和arc确定下一个点的坐标
* @param arc 为弧度
* @return 下一个点的坐标
*/
public Point nextPoint(double arc) {
int x = (int) (startX - r * Math.sin(arc));
int y = (int) (startY + r - r * Math.cos(arc));
Point p = new Point(x yColor.YELLOW pc);
return p;
}
/**
* 计算产生count条边
* @param count 不连通图中边的个数
*/
public void posOfLine(int count){
int m = count - ps.size();
for(int i = 1; i <= count; i++ ){
if(i < ps.size()){
ls.add(getLine(ps.get(i-1) ps.get(i)));
}
else if(i == ps.size() ){
ls.add(getLine(ps.get(0) ps.get(i-1)));
}
else{
if( m <= 0 ) continue;
if(m >= 2 ){
ls.add(getLine(ps.get(m-2) ps.get(m)));
}else{
ls.add(getLine(ps.get(1) ps.get(ps.size()-1)));
}
m--;
}
}
}
public Line getLine(Point p1 Point p2){
Line l = new Line(p1 p2 pc);
return l;
}
public void draw(Graphics g){
g.drawString(“点数:“+ ps.size() 10 10);
g.drawString(“边数:“+ ls.size() 10 20);
pointColorTest(0 ps ls);
for(int i = 0; i < ps.size(); i++ ){
Point p1 = ps.get(i);
p1.draw(g);
}
for(int i = 0; i < ls.size(); i++ ){
Line l = ls.get(i);
l.draw(g);
}
}
/**
* 递归判断下标为num的点与 在点集中下标大于num之后的点是否有连线,
* 若有,在判断两点颜色,一样则把之后的点涂上随机颜色,不一样则继续,若无连线,就涂上num相同的颜色
* @param num 当前递归时的点下标
* @param ps 点集
* @param ls 边集
*/
public void pointColorTest(int num List ps List ls){
if(num == ps.size()){
return ;
}
Point point = ps.get(num) p;
for(int i = num+1; i < ps.size(); i++){
p = ps.get(i);
if(! pointIsConnect(point p ls) ){
p.color = point.color;
}
else{
if( isColorIsValid(point.color p.color)){
p.color = selectColor(point.color);
}
}
}
if(num == ps.size()-1){
for(int i = 0; i < ps.size()-1; i++){
p = ps.get(i);
if(pointIsConnect(point p ls) ){
if( isColorIsValid(p.color point.color)){
point.color = selectColor(p.color);
}
}
}
}
pointColorTest( ++num ps ls);
}
/**
* 判断两点是否在一条线上
*/
publ
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 232 2006-01-01 00:45 图结点着色\.classpath
文件 388 2006-01-01 00:45 图结点着色\.project
文件 4476 2006-01-01 00:47 图结点着色\bin\DuoBianXing.class
文件 1249 2006-01-01 00:46 图结点着色\bin\Line.class
文件 888 2006-01-01 00:46 图结点着色\bin\PaintColor$MyPanel.class
文件 3366 2006-01-01 00:46 图结点着色\bin\PaintColor.class
文件 1011 2006-01-01 00:46 图结点着色\bin\Point.class
文件 3983 2006-01-01 00:47 图结点着色\src\DuoBianXing.java
文件 624 2006-01-01 00:46 图结点着色\src\Line.java
文件 3086 2006-01-01 00:46 图结点着色\src\PaintColor.java
文件 483 2006-01-01 00:46 图结点着色\src\Point.java
目录 0 2014-11-27 13:47 图结点着色\bin
目录 0 2014-11-27 13:47 图结点着色\src
目录 0 2014-11-27 13:47 图结点着色
----------- --------- ---------- ----- ----
19786 14
- 上一篇:复杂多边形运算并、交、差
- 下一篇:推箱子java实现源码
相关资源
- 推箱子java实现源码
- 网上购买的传智播客Java就业班之手机
- java实现小型图书管理系统
- 电器商城小系统 java
- 简单的人机对话java
- Java电子词典源程序
- java网络抓包(Jpcap0.7的教程 程序 源码
- java web 实现 调查问卷带数据库
- Java教学管理系统课程设计报告+源码
- JAVA MyLine
- 基于JAVA聊天系统的开题报告
- mysql驱动文件mysql-connector-java-5.0.4-bi
- JAVA加密MD5源代码
- zxing-3.1.0.jar和zxing-javase-3.1.0.jar
- 遗传算法GeneticAlgorithm的Java实现源码工
- Java AES文件和文本加解密
- java实现的中文词性标注算法
- 剑指offer(java版).pdf
- Scalable IO in Java -Doug Lea
- java权限系统概要设计说明书
- 用java实现的简易型科学计算器
- javax.annotation
- 英汉小字典Java课程设计
- 将一段文字转化为哈夫曼编码JAVA实现
- 档案管理系统 源代码+数据库
- java的fastjson.jar包
- Java 利用poi 导出excel 工具类,超实用
- 广工JAVA作业报告
- 局部加权朴素贝叶斯
- 本科毕业论文java外文翻译
评论
共有 条评论