网站首页 > 文章中心 > 其它

JAVA雪花堆积的代码

作者:小编 更新时间:2023-08-22 07:53:01 浏览量:27人看过

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

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

如图所示:

解决方案

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

①..三等分一条线段;

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

JAVA雪花堆积的代码-图1

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

网页飘雪花的代码是什么

在后台添加js特效可实现这样的效果.

js代码为:

JAVA雪花堆积的代码-图2

script language="JavaScript"

!--

var s, x, y, sn, cs;

var a, r, cx, cy;

x = new Array();

y = new Array();

r = new Array();

cx = new Array();

cy = new Array();

doc_width = self.innerWidth; //取页面宽度

doc_height = self.innerHeight; //取页面高度

}

else

doc_width = document.body.clientWidth; //取页面宽度

doc_height = document.body.clientHeight; //取页面高度

for (i = 0; i no; ++ i) { //根据前面定义的雪片数目写进相应数目的层

initSnow(); //随机初始化层的坐标

//用layer作为雪片(星号)的容器

document.write("layer name=\"dot"+ i +"\" left=\"1\" ");

document.write("top=\"1\" visibility=\"show\"font color=\"red\"");

document.write("*/font/layer");

document.write("absolute; Z-INDEX: "+ i +"; VISIBILITY: ");

//初始化雪片,生成随机坐标

function initSnow() {

r[i] = 1;

sn = Math.sin(a);

cs = Math.cos(a);

cx[i] = Math.random() * doc_width + 1;

cy[i] = Math.random() * doc_height + 1;

x[i] = r[i] * sn + cx[i];

y[i] = cy[i];

//计算雪花位置,从新位置上出现,看起来就像是新产生的一样.

function makeSnow() {

cy[i] = 1;

y[i] = r[i] * cs + cy[i];

//雪花下落的计算

function updateSnow() {

r[i] += s;

//在NS浏览器上处理雪片下落的主程序

function SnowdropNS() {

for (i = 0; i no; ++ i) { //依次处理每片雪花

updateSnow(); //下落

makeSnow(); //则调整雪片到新位置上

doc_width = self.innerWidth; //更新页面宽度数据

doc_height = self.innerHeight; //更新页面高度数据

document.layers["dot"+i].top = y[i]; //改变层的Y坐标,应用新的位置

document.layers["dot"+i].left = x[i]; //改变层的X坐标,应用新的位置

setTimeout("SnowdropNS()", speed);

//在IE浏览器上处理雪片下落的主程序

function SnowdropIE() {

JAVA雪花堆积的代码-图3

doc_width = document.body.clientWidth; //更新页面宽度数据

doc_height = document.body.clientHeight; //更新页面高度数据

document.all["dot"+i].style.pixelTop = y[i]; //改变层的坐标,应用新的位置

document.all["dot"+i].style.pixelLeft = x[i];

setTimeout("SnowdropIE()", speed); //准备下一次下落过程.

SnowdropNS(); //调用SnowdropNS使雪片下落

SnowdropIE(); //调用SnowdropIE使雪片下落

--

/script

说明:可以根据自己的需求根据说明进行相应参数的修改

JAVA获取雪片的X,Y坐标值

radom.nextInt()是取得一个随机整数

简单来说,你在屏幕上画一个直角坐标系,原点就是你屏幕的中心点的话,雪花总会落在坐标系的第一象限区域内.

求用JAVA制作的飘雪花的效果

import?java.applet.Applet;

import?java.awt.*;

import?javax.swing.JFrame;

import?java.awt.image.BufferedImage;

import?java.util.Random;

public?class?SnowPic?extends?Applet?implements?Runnable{

Thread?mainThread;

Image?offScreen,gAlc[];

Random?rand;

int?stopFlag,snows,wind,threadSleep,snowSize;

int[]?snowX,snowY;

long?stopTime?=0;

Dimension?dim;

MediaTracker?mt;

public?SnowPic(){

String?s=null;

try{

s=getParameter(s1);

}catch(NullPointerException?ex){

if(s!=null){

return?max;

return?min;

}else{

public?void?init(){

rand?=new?Random();

dim?=getSize();

snowX?=?new?int?[snows];

snowY?=?new?int?[snows];

for(?int?i=0;isnows;i++){

mt?=new?MediaTracker(this);

gAlc=?new?Image[1];

gAlc[0]=getImage(getDocumentBase(),?getParameter("graphic","test.gif"));

offScreen=createImage(dim.width,?dim.height);

}catch(Exception?ex){

gAlc[0]=new?BufferedImage(dim.width,?dim.height,?BufferedImage.TYPE_INT_RGB?);

offScreen=new?BufferedImage(dim.width,?dim.height,?BufferedImage.TYPE_INT_RGB?);

mt.addImage(gAlc[0],0);

mt.waitForID(0);

}catch(InterruptedException?ex)?{

return;

stopFlag?=0;

public?void?start(){

if?(mainThread==null){

mainThread=new?Thread(this);

mainThread.start();

public?void?stop(){

mainThread?=null;

public?void?run(){

while(mainThread?!=null){

Thread.sleep(threadSleep);

}catch(InterruptedException?ex)?{return;}

repaint();

public?void?drawBackSnow(Graphics?g){

g.setColor(Color.white);

for(int?i=0;isnows;i++){

g.fillOval(snowX[i],snowY[i],snowSize,snowSize);

if(snowX[i]=dim.width)?snowX[i]=0;

if(snowX[i]0)?snowX[i]=dim.width?-1;

if(snowY[i]=dim.height?||snowY[i]0){

snowX[i]?=Math.abs(rand.nextInt()%dim.width);

snowY[i]?=0;

public?void?paint(Graphics?g){

offScreen.getGraphics().setColor(Color.black);

offScreen.getGraphics().fillRect(0,0,dim.width,dim.height);

offScreen.getGraphics().drawImage(gAlc[0],0,0,this);

drawBackSnow(offScreen.getGraphics());

g.drawImage(offScreen,0,0,null);

public?void?update(Graphics?g){

paint(g);

public?static?void?main(String?args[]){

SnowPic?snow=new?SnowPic();

snow.init();

JFrame?jf=new?JFrame("SnowPic");

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jf.add(snow);

jf.setVisible(true);

snow.start();

请参考

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章