- 浏览: 152643 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
lvbolvtian:
楼主最好贴上思路先
给你n个数,其中有且仅有三个数出现了奇数次,其余的数都出现了偶数次。用线性时间常数空间找出出现了奇数次的那三个数(代码)。 -
omooeo:
很好!谢了!
HSSF读取Excel是公式单元格处理 -
独步天下:
Apache Velocity DocBook Framework 转换中文PDF -
ph4nut:
有趣的发现,最近一直等待火炬之光2发布,希望这个版本能补上这个 ...
火炬之光(TorchLight)附魔(Enhance)的设计缺陷 -
andyjojo:
哎证明是O(n)的还真难
Array Puzzle
接上一篇,图像化初步尝试
代码没有优化
代码没有优化
package com.onezero; import java.awt.*; import javax.swing.*; public class CubePaint extends JFrame{ private static double[][] points={}; private MagicCube mc; CubePaint(){ super("魔方游戏"); mc = new MagicCube(CubeNode.getOriginNode()); this.setSize(600,620); final CubeCanvas cc = new CubeCanvas(this); this.add(cc); this.setVisible(true); new Thread(){ public void run(){ try{ do{ mc.rotate(1, 0); cc.repaint(); Thread.sleep(5000); if(mc.equals(MagicCube.ORIGINCUBE))break; mc.rotate(2, 0); cc.repaint(); Thread.sleep(5000); if(mc.equals(MagicCube.ORIGINCUBE))break; mc.rotate(-1, 2); cc.repaint(); Thread.sleep(5000); if(mc.equals(MagicCube.ORIGINCUBE))break; mc.rotate(-2, 2); cc.repaint(); Thread.sleep(5000); if(mc.equals(MagicCube.ORIGINCUBE))break; }while(true); }catch(Exception e){ } } }.start(); } public MagicCube getMc() { return mc; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub new CubePaint(); } } class CubeCanvas extends JComponent { static int wall = 20; static int space = 3; private MagicCube mc; private CubePaint cp; private int width, height; private int wspace, hspace; private int len; CubeCanvas(CubePaint cp){ this.cp = cp; this.mc = cp.getMc(); width = cp.getWidth(); height = cp.getHeight()-20; len = (Math.min(width, height) - 2 * wall) / 9; wspace = (width - 9*len)/2; hspace = (height - 9*len)/2; } public void paint(Graphics g) { width = cp.getWidth(); height = cp.getHeight()-20; len = (Math.min(width, height) - 2 * wall) / 9; wspace = (width - 9*len)/2; hspace = (height - 9*len)/2; for(int i=0;i<27;i++){ if(i==13)continue; draw(g,mc.getCubeNode(i)); } } private void draw(Graphics g, CubeNode node){ if(node==null)return; int[] xyz = node.location.xyz; if(xyz[Point3D.Y]==0){ //前面 int[] xPoints = getxPoints(xyz,1); int[] yPoints = getyPoints(xyz,1); g.setColor(getColor(node.nodecolor.getColorId(1))); g.fillPolygon(xPoints, yPoints, 4); g.setColor(Color.BLACK); g.drawPolygon(xPoints, yPoints, 4); } if(xyz[Point3D.X]==2){ //右面 int[] xPoints = getxPoints(xyz,2); int[] yPoints = getyPoints(xyz,2); g.setColor(getColor(node.nodecolor.getColorId(2))); g.fillPolygon(xPoints, yPoints, 4); g.setColor(Color.BLACK); g.drawPolygon(xPoints, yPoints, 4); } if(xyz[Point3D.Z]==2){ //上层 int[] xPoints = getxPoints(xyz,5); int[] yPoints = getyPoints(xyz,5); g.setColor(getColor(node.nodecolor.getColorId(5))); g.fillPolygon(xPoints, yPoints, 4); g.setColor(Color.BLACK); g.drawPolygon(xPoints, yPoints, 4); } } private int[] getxPoints(int[] xyz, int face){ int[] xPoints = new int[4]; switch(face){ case 1: xPoints[0] = wspace + 2*xyz[0]*len; xPoints[1] = xPoints[0]; xPoints[2] = xPoints[1] + 2*len; xPoints[3] = xPoints[2]; xPoints[0] += space; xPoints[1] += space; break; case 2: xPoints[0] = wspace + xyz[1]*len + 6*len; xPoints[1] = xPoints[0]; xPoints[2] = xPoints[1] + len; xPoints[3] = xPoints[2]; xPoints[0] += space; xPoints[1] += space; break; case 5: xPoints[0] = wspace + (2*xyz[0] + xyz[1])*len; xPoints[1] = xPoints[0] + len; xPoints[3] = xPoints[1] + len; xPoints[2] = xPoints[3] + len; xPoints[0] += space; xPoints[1] += space/2; xPoints[2] -= space/2; } return xPoints; } private int[] getyPoints(int[] xyz, int face){ int[] yPoints = new int[4]; switch(face){ case 1: yPoints[0] = hspace + 2*(3 - xyz[2])*len + 3*len; yPoints[1] = yPoints[0] - 2*len; yPoints[2] = yPoints[1]; yPoints[3] = yPoints[0]; yPoints[1] += space; yPoints[2] += space; break; case 2: yPoints[0] = hspace + 2*(3 - xyz[2])*len + (3-xyz[1])*len; yPoints[3] = yPoints[0] - len; yPoints[1] = yPoints[3] - len; yPoints[2] = yPoints[1] - len; yPoints[0] -= space; yPoints[1] += space/2; yPoints[2] += space + space/2; break; case 5: yPoints[0] = hspace + (3 - xyz[1])*len; yPoints[1] = yPoints[0] - len; yPoints[2] = yPoints[1]; yPoints[3] = yPoints[0]; yPoints[1] += space; yPoints[2] += space; } return yPoints; } private Color getColor(int colorId){ switch(colorId){ case 0: return Color.RED; case 1: return Color.BLUE; case 2: return Color.GREEN; case 3: return Color.YELLOW; case 4: return Color.PINK; default: return Color.WHITE; } } }
- CubePaint.rar (1.3 KB)
- 下载次数: 37
发表评论
-
Java 暴力破解扑克骗局
2017-05-13 19:45 733{ "♣3", "♦4" ... -
Debug tips
2016-03-22 22:41 4201 add log in third party code ... -
Java8 sample code 阅读
2014-07-08 17:41 754阅读了jdk1.8.0_05/sample/lambda/Bu ... -
判断一个数字是否是回文
2011-06-09 12:00 1801最近碰到一个题目,其中一步判断数字是否为回文 由于题目要求是最 ... -
PNG转GIF
2010-08-20 11:37 2570PNG转GIF,并保留透明部分 public sta ... -
J2ME M3G 编程
2010-01-13 17:16 1363//顶点集合 VertexArray vertexA ... -
svg标签
2010-01-11 13:50 2639Property Trait Getter [possibl ... -
char类型与Unicode
2010-01-06 18:03 1650char tempchar = '我'; S ... -
J2ME 发送短信
2009-12-29 17:03 1386J2ME使用WMA发送短信时如果附带端口,手机接收不到短信息, ... -
J2ME SDK
2009-12-29 16:47 1386Nokia(诺基亚) Nokia确实比较贴心,有中文网页,有专 ... -
J2ME opensource
2009-12-29 16:46 2114J2ME Polish J2ME Polish是用 ... -
J2ME Connector HTTPConnection 内容格式 chunked
2009-06-11 18:36 2062最近学J2ME,遇到一个问题: 使用Connector.ope ... -
父类构造方法调用
2009-06-11 10:42 40711.所有类如果没有构造 ... -
三角形判断
2009-05-26 16:09 1771某人刚学Java,一道三角形判断题,下面是代码。记录在此,以资 ... -
数字转化为汉字 1243568962=>壹亿肆仟叁佰伍拾陆万捌仟玖佰陆拾贰
2009-05-20 09:20 1402private String numFormat(int fl ... -
MouseInfo
2009-03-30 11:07 1244java.awt 类 MouseInfo java.lang ... -
Java 获取鼠标坐标 MouseInfo类
2009-03-30 11:02 7061Java GUI编程时获取鼠标坐标一般在Component上添 ... -
获取本地 ip (多网卡的情况下)
2009-02-16 17:47 6554public String getLocalHostName( ... -
字符,字节和编码
2009-02-10 17:16 777字符,字节和编码 [原 ... -
魔方Java程序
2009-01-21 10:47 3464近期尝试写个java的魔方程序。提供图像化界面。 数据结果如下 ...
相关推荐
logistic 图像加密 解密 matlab 魔方变换
在Android应用中集成OpenCV,可以进行图像预处理,例如灰度化、直方图均衡化,以提高颜色识别的准确性。之后,可能需要使用色彩空间转换,比如从RGB转换到HSV,因为HSV色彩空间更利于颜色的判断。 颜色识别阶段,...
C++实用图像处理(黑魔方)光盘文件--学习版Imgcx,
《C++实用图像处理(黑魔方)》是一套专注于图像处理技术的资源包,主要针对C++编程语言。这个光盘文件2包含了用于学习和实践C++图像处理的资源,尽管描述中提到它是一个独立的部分,但可以与其他文件配合使用以获取...
基于matlab和图像识别实现解魔方机器人源码图像识别魔方解算串口发送信息给stm32+代码注释.zip硬件机械平台:双臂双爪机械手,4个舵机,完成拧魔方的动作、USB 摄像头,完成魔方图像拍摄。 上位机程序 MATLAB 写的...
1. 图像捕获:使用Qt中的摄像头功能或读取已保存的魔方图片,获取魔方的图像输入。 2. 预处理:对图像进行预处理,包括灰度化、直方图均衡化、二值化等操作,以增强颜色边界并减少噪声。 3. 轮廓检测:利用OpenCV...
图像预处理:通过使用OpenCV提供的图像处理算法,对输入的魔方图像进行预处理,包括图像去噪、边缘检测、图像分割等操作,以提高后续的识别准确率。 特征提取与模式识别:通过使用OpenCV提供的特征提取算法,对...
1. 图像预处理:采集到的图像可能受到光照、阴影等因素影响,需要通过灰度化、去噪、边缘检测等步骤改善图像质量,便于后续处理。 2. 魔方面识别:通过颜色分割技术,将魔方的六种颜色区分开来。这可能涉及到阈值...
基于matlab和图像识别实现的解魔方机器人项目完整源码(完成图像识别_魔方解算_串口发送信息给stm32)+代码注释+数据集+项目说明.zip 上位机程序 MATLAB 写的上位机,完成图像识别,魔方解算,通过串口发送机械运动...
本软件可以转出任意打乱的魔方,利用OpenGL显示三维魔方,其中在软件的开始界面中需要输入魔方的图像信息,首先在右上角的六个方格中输入魔方的六个面的颜色,然后利用鼠标右键点其中的一个颜色,拖动到中间的54个...
在当今的科技时代,解魔方机器人作为一种机电一体化的智能设备,将魔方复原算法、计算机视觉和机器人控制技术融合在一起。这种机器人不仅可以展示人工智能的强大能力,也推动了相关技术的发展。文档中提到的解魔方...
在IT领域,3D魔方软件是利用计算机技术模拟真实三阶魔方的工具,它为用户提供了在电脑上体验和解决魔方的便捷途径。3D3阶魔方指的是具有三个维度,每一维度都有三层的魔方玩具,是魔方世界中最经典且最普及的一种...
【标题】"hei-mo-fang-code.rar"指的是一个压缩包文件,其中包含了与"魔方"相关的代码,特别是"黑魔方"的图像处理代码。"黑魔方"在这里可能是指一种特定的魔方软件或者算法,它涉及到图像处理技术在魔方领域的应用。...
白平衡算法,用于修正图像色差 2. 单片机程序 STM32F103C8T6.zip 采用串口通信接收上位机的指令,用PWM波控制舵机,完成魔方的拧动。 3. 魔方样本图片 samples100.zip 费好大劲制作的100套实拍魔方图片,为颜色...
`findContours`函数可以帮助我们找到每个小魔方的轮廓,进而分离出每个小魔方的图像。 分离出小魔方后,我们可以对每个小魔方进行进一步处理,例如计算其中心点、旋转校正(如果需要)以及分析每个面的颜色。OpenCV...
综上所述,这个项目可能是一个使用Python编写的二阶魔方解决程序,它包含一个用户界面,可能通过图像(男.jpg和女.jpg)来呈现,而number_of_god.py文件是核心算法实现,负责找出解决魔方的最短路径。对于初学者或者...