重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

分形雪花Java代码 雪花算法java 分布式

想实现多个雪花,为什么只有一个雪花,怎么实现多线程,另外怎样实现无窗体的动画, 就跟q宠物那样的

没用Java写过,现这种效果最好是用DriectX或者OpenGL里实现,要不,用Java这类托管语言来做的话,所有的东西都是面向对象的,堆和托管堆交互很频繁,还有开N多线程,线程的数量是有限制的。如果你需要的效果是直接在屏幕上即没有容器的那种,可以直接操作显存试试,这个要用底层语言比如C嵌汇编操作显存的文件映射区域等等,其中雪花飘落的过程用一种计算表达式来实现,比如其中有一些速度因子,大小因子,轨迹因子,等等(看自己喜好)。记得以前写过一个DriectX里的粒子运动效果,和雪花飘落的功能很相似,只是它不能直接在桌面上显示,需要容器。

成都创新互联专注于企业全网整合营销推广、网站重做改版、云龙网站定制设计、自适应品牌网站建设、H5页面制作成都商城网站开发、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为云龙等各大城市提供网站开发制作服务。

详解如何用java实现Koch雪花的绘制

Koch雪花其实就是一种Koch曲线。

Koch曲线是一个数学曲线,同时也是早期被描述的一种分形曲线。它由瑞典数学家Helge von Koch在1904年发表的一篇题为“从初等几何构造的一条没有切线的连续曲线”的论文中提出。有一种Koch曲线是象雪花一样,被称为Koch雪花(或Koch星),它是由三条Koch曲线围成的等边三角形。至于更详细的请读者百度百科。

如图所示:

解决方案

设想从一个线段开始,根据下列规则构造一个Koch曲线:

1.三等分一条线段;

2.用一个等边三角形替代第一步划分三等分的中间部分;

3.在每一条直线上,重复第二步。

Koch曲线是以上步骤地无限重复的极限结果。

Koch曲线的长度为无穷大,因为以上的变换都是一条线段变四条线段,每一条线段的长度是上一级的1/3,因此操作n步的总长度是(4/3)n:若n→∞,则总长度趋于无穷。Koch曲线的分形维数是log 4/log 3 ≈ 1.26,其维数大于线的维数(1),小于Peano填充曲线的维数(2)。

Koch曲线是连续的,但是处处不可导的。

Koch雪花的面积是 2* √3 * ssup2;/5 ,这里的s是最初三角形的边长,Koch雪花的面积是原三角形面积的8/5,它成为一条无限长的边界围绕着一个有限的面积的几何对象。

JAVA怎么实现一屏幕的雪花飘落,方向随机,有大有小

第一种。。你的雪花是图片,那么你自己多做几张旋转的图片,在每次飘落的时候,1秒后换取另外一张图片。或者做成gif图片。

第二种:你的是自己画的雪花,那么你每秒要重新绘制你的雪花。

闪屏 是指面板刷新带来的负面的效果。。

java 能否实现桌面下雪花的效果?使用swing?

/*

*实现在窗体上随机布满300个雪花("*"),滚动

*在上次的课基础上增加了for循环(一次要产生300个变量),随机数,数组 ;

*下面的序号为步骤

*/ import java.awt.* ; //(3)导入awt包

public class Star {

public static void main(String args[]) {

Frame w = new Frame() ; //(1)绘制窗体

w.setSize(1024,768) ; //(4)把窗体布满全屏

w.setBackground(Color.BLACK) ; //(5)背景为黑颜色

MyPanel mp = new MyPanel() ; //(7)把MyPanel对象mp,添加到窗体w上

w.add(mp) ;

Thread t = new Thread(mp) ;

t.start() ; //(12)启动线程

w.show(); //(2)显示窗体

}

}

//(6)继承Panel类

class MyPanel extends Panel implements Runnable { //(11)实现Runnable接口

int x[] = new int[300] ;

int y[] = new int[300] ; //(8)定义300个数组变量 MyPanel(){

for(int i = 0;i 300; i++) {

x[i] = (int)(Math.random()*1024) ;

y[i] = (int)(Math.random()*768) ; //(9)当程序走到第6步的时候程序就会调用构成函数

} //由于随机数是从0-1之间的数任意产出所以x乘以1024,y乘以768再转换为int类型

}

public void paint(Graphics g) {

for(int i = 0;i 300; i++) {

g.setColor(Color.WHITE) ;

g.drawString("*",x[i],y[i]) ;

//g.drawString("*",30,30) ;(7)绘制一个星星在屏幕的x=30,y=30的位置上

} //(10)绘制300个雪花,把坐标30,30,改成x[i],y[i] ;

} //做到这步可以实现在黑色的天空布满300个星星

public void run() {

while(true) { //(13)实现产生300个雪花往下落死循环

for(int i = 0 ; i 300; i++) {

y[i]++ ; //(14)y坐标不断的+1

if(y[i] 768){ //(18)如果y轴坐标大于768时,则y = 0,回到窗体的顶部

y[i] = 0 ;

}

}

try{ //(16)用try,catch解决线程休眠的异常

Thread.sleep(20) ; //(15)在每次y轴坐标+1后线程休眠20毫秒

}catch(Exception e) {}

repaint() ; //(17)雪花在新的位置重画

}

}

}


网页题目:分形雪花Java代码 雪花算法java 分布式
网页网址:http://cqcxhl.com/article/dogoheg.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP