particlecanvas.java

来自「用java3d做的一个粒子系统可以控制粒子运动」· Java 代码 · 共 82 行

JAVA
82
字号
import javax.media.j3d.*;import javax.vecmath.*;import java.awt.*;    final class ParticleCanvas extends Canvas3D {        private Appearance appearance=new Appearance();        private Transform3D gct=new Transform3D();        public ParticleCanvas(GraphicsConfiguration gc){            super(gc);        }        /*                public void renderField(int field){                        GraphicsContext3D gc = getGraphicsContext3D();            gc.setAppearance(appearance);                        double newTime=System.currentTimeMillis()*.001;            double dt=newTime-lastTime;            lastTime=newTime;                        localTime+=timeSpeed*dt;            z_rot=(z_rot + z_rot_vel*dt);                        //zrot.rotZ(Particles.z_rot);                        int count=0;            for(int i=0;i<numPoints;i++){                                double s = ((double)i) / numPoints;                double t = localTime*s;                int radius_idx = (int) (0xffff & (long)((15646.0*t)));                double radius=1.0+.5*COS[radius_idx];                                rotate.rotZ((t*Math.PI/10) % Math.PI*2);                gct.mul(zrot,rotate);                                vec.set(radius,0,0);                translate.setTranslation(vec);                gct.mul(translate);                                int sweep_time_idx = (int) (0xffff & (long) (32768*localTime+65536*s));                double sweep = SIN[sweep_time_idx];                double rad_cos = COS[sweep_time_idx];                double rad = .1 * (1+rad_cos);                double c = 8*rad-.8;                int angle_idx = (int) (0xffff & (long)(8192*sweep));                double x = rad * COS[angle_idx];                double y = rad * SIN[angle_idx];                double z = SIN[(int)(0xffff & (long)(13451*t))];                                p0.set(x,y,z);                p1.set(0,0,z);                p2.set(-x,y,z);                                gct.transform(p0);                gct.transform(p1);                gct.transform(p2);                                color.set((float)(.4+3*rad*s),                          (float)(rad*(2*z+3)),                          (float)(c*c+.3f));                                colors[count].set(color); points[count++].set(p0);                colors[count].set(color); points[count++].set(p1);                colors[count].set(color); points[count++].set(p1);                colors[count].set(color); points[count++].set(p2);                            }                        linearray.setCoordinates(0,points);            linearray.setColors(0,colors);            gc.draw(linearray);            }            */    }    

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?