资源简介
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源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- 实现一个图书管理系统
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- 百度地图自定义Markerandroid
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
评论
共有 条评论