⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lineshape.java

📁 用java3d做的一个粒子系统可以控制粒子运动
💻 JAVA
字号:
import javax.media.j3d.*;import javax.vecmath.*;final class LineShape extends LineArray {    private Point3d[] coord;    private Color3f[] color;    private int numPoints;    private double invNumPoints;    private Transform3D rotate=new Transform3D();    private Transform3D translate=new Transform3D();    private Vector3d vec=new Vector3d();    // scratch vars    private Color3f tmpcolor=new Color3f();    private Point3d p0=new Point3d(),	p1=new Point3d(),	p2=new Point3d();    public LineShape(int numPoints){        super(4*numPoints,COLOR_3 | COORDINATES);                this.numPoints=numPoints;	invNumPoints = 1.0/numPoints;	        int nCoord=4*numPoints;        setCapability(ALLOW_COLOR_WRITE);        setCapability(ALLOW_COORDINATE_WRITE);                coord=new Point3d[nCoord];        color=new Color3f[nCoord];        for(int i=0;i<nCoord;i++){            coord[i]=new Point3d();            color[i]=new Color3f();        }    }    void update(double localTime){        int count=0;        for(int i=numPoints; --i>=0; ){                                double s = ((double)i) / numPoints;            double t = localTime*s;	    int radius_idx = (int) (0xffff & (long)((15646.0*t)));            double radius=1.0+.5*Particles.COS[radius_idx];                        rotate.rotZ((t*Math.PI/10) % Math.PI*2);            vec.set(radius,0,0);            translate.setTranslation(vec);                        int sweep_time_idx = (int) (0xffff & (long) (32768*localTime+65536*s));            double sweep = Particles.SIN[sweep_time_idx];            double rad_cos = Particles.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 * Particles.COS[angle_idx];            double y = rad * Particles.SIN[angle_idx];            double z = Particles.SIN[(int)(0xffff & (long)(13451*t))];                        rotate.mul(translate);                        tmpcolor.set((float)(.4+3*rad*s),			 (float)(rad*(2*z+3)),			 (float)(c*c+.3f));                        p0.set(x,y,z);            p1.set(0,0,z);            p2.set(-x,y,z);                        rotate.transform(p0);            rotate.transform(p1);            rotate.transform(p2);                        color[count].set(tmpcolor); coord[count++].set(p0);             color[count].set(tmpcolor); coord[count++].set(p1);            color[count].set(tmpcolor); coord[count++].set(p1);             color[count].set(tmpcolor); coord[count++].set(p2);         }                        setCoordinates(0,coord);        setColors(0,color);    }        }

⌨️ 快捷键说明

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