📄 lineshape.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 + -