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 + -
显示快捷键?