📄 swdiet3d.java
字号:
tmpint4x4a[1][1] = sc[1]; tmpint4x4a[1][2] = 0 ; tmpint4x4a[2][0] = 0 ; tmpint4x4a[2][1] = 0 ; tmpint4x4a[2][2] = one ; copyMM( m, tmpint4x4b ); multMM( tmpint4x4b, tmpint4x4a , m ); } if ( y != 0) { { while ( y < 0 ) { y += PI2; } sc[0] = ( ( (y%PI2) * sinesize + half ) / PI2 ) ; sc[1] = ( sc[0] + (sinesize/4)); sc[0] = sine[ (sc[0]%sinesize) ]; sc[1] = sine[ (sc[1]%sinesize) ]; }; tmpint4x4a[0][0] = sc[1]; tmpint4x4a[0][1] = 0 ; tmpint4x4a[0][2] = - sc[0]; tmpint4x4a[1][0] = 0; tmpint4x4a[1][1] = one ; tmpint4x4a[1][2] = 0 ; tmpint4x4a[2][0] = sc[0]; tmpint4x4a[2][1] = 0 ; tmpint4x4a[2][2] = sc[1] ; copyMM( m, tmpint4x4b ); multMM( tmpint4x4b, tmpint4x4a , m ); } if ( x != 0 ) { { while ( x < 0 ) { x += PI2; } sc[0] = ( ( (x%PI2) * sinesize + half ) / PI2 ) ; sc[1] = ( sc[0] + (sinesize/4)); sc[0] = sine[ (sc[0]%sinesize) ]; sc[1] = sine[ (sc[1]%sinesize) ]; }; //MACRO_println("s/c="+c + " " +s); tmpint4x4a[0][0] = one; tmpint4x4a[0][1] = 0 ; tmpint4x4a[0][2] = 0; tmpint4x4a[1][0] = 0; tmpint4x4a[1][1] = sc[1] ; tmpint4x4a[1][2] = -sc[0] ; tmpint4x4a[2][0] = 0; tmpint4x4a[2][1] = sc[0] ; tmpint4x4a[2][2] = sc[1] ; copyMM( m, tmpint4x4b ); multMM( tmpint4x4b, tmpint4x4a, m ); } //printM(m); //debug("-rotate"); } /* Axis / angle Matrix 1 + (1-cos(angle))*(x*x-1) -z*sin(angle)+(1-cos(angle))*x*y y*sin(angle)+(1-cos(angle))*x*z z*sin(angle)+(1-cos(angle))*x*y 1 + (1-cos(angle))*(y*y-1) -x*sin(angle)+(1-cos(angle))*y*z -y*sin(angle)+(1-cos(angle))*x*z x*sin(angle)+(1-cos(angle))*y*z 1 + (1-cos(angle))*(z*z-1) */ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//#define copyV3V3(s,d) { d[0]=s[0]; d[1]=s[1]; d[2]=s[2]; }//#define lengthV3(a,SQRT) SQRT((a)[0]*(a)[0]+(a)[1]*(a)[1]+(a)[2]*(a)[2])//#define normV3(a,TYPE,SQRT){TYPE l=SQRT((a)[0]*(a)[0]+(a)[1]*(a)[1]+(a)[2]*(a)[2]);(a)[0]/=l;(a)[1]/=l;(a)[2]/=l;}//#define crossV3V3V3(a,b,r){(r)[0]=(a)[1]*(b)[2]-(a)[2]*(b)[1];(r)[1]=(a)[2]*(b)[0]-(a)[0]*(b)[2];(r)[2]=(a)[0]*(b)[1]-(a)[1]*(b)[0];}//#define macroMultFF(a,b) ( ( a * b ) + half ) >> offset )/* $Id: MathFixed.java.in,v 1.5 2004/11/02 14:33:14 rzr Exp $ *//* $Id: Raster.java.in,v 1.8 2004/11/02 14:33:14 rzr Exp $ *//* $Id: HackJavaCpp.java.in,v 1.6 2004/11/02 14:33:14 rzr Exp $ *//* $Id: *//** * This in a template java source file wich can be preprocessed with GNU cpp * see CppHack.java.in * @author www.Philippe.COVAL.free.fr * Copyright and License : http://rzr.online.fr/license.htm **/ static int[] colorbuffer = null; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/* $Id: Raster.java.in,v 1.8 2004/11/02 14:33:14 rzr Exp $ *//* $Id: SWDiet3DRender.java.in,v 1.4 2004/11/02 14:33:14 rzr Exp $ */ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /** store in r[] vertex[i] after viewing transform */ public void coord(int i, int[] r) { this.multMV( m_, obj_vv[i] , r ); { { r[0]= (( r[0] + half ) >> offset ); r[1] = (( r[1] + half ) >> offset ); r[2] = (( r[2] + half ) >> offset ); }; r[0] = (r[0] << scale) + screen[0] ; r[1] = - (r[1] << scale) + screen[1] ; r[2] = (r[2] << scale) + screen[2] ; }; } /** face[i] **/ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ public void paintVertex(Graphics g) { // g.setForeColor(0x00000000); g.setForeColor(Color.BLACK); for(int i=0; i < obj_nv; i++) { coord(i, vn); g.drawLine( vn[0], vn[1], vn[0], vn[1]); } //debug("-paintVertex"); } public void paintLine(Graphics g) { int c= 0x000000E0; for(int i=0; i < obj_nf; i++) { { this.multMV( m_, obj_vv[ obj_vf[i][0] ] , va ); this.multMV( m_, obj_vv[ obj_vf[i][1] ] , vb ); this.multMV( m_, obj_vv[ obj_vf[i][2] ] , vc ); { { va[0]= (( va[0] + half ) >> offset ); va[1] = (( va[1] + half ) >> offset ); va[2] = (( va[2] + half ) >> offset ); }; va[0] = (va[0] << scale) + screen[0] ; va[1] = - (va[1] << scale) + screen[1] ; va[2] = (va[2] << scale) + screen[2] ; }; { { vb[0]= (( vb[0] + half ) >> offset ); vb[1] = (( vb[1] + half ) >> offset ); vb[2] = (( vb[2] + half ) >> offset ); }; vb[0] = (vb[0] << scale) + screen[0] ; vb[1] = - (vb[1] << scale) + screen[1] ; vb[2] = (vb[2] << scale) + screen[2] ; }; { { vc[0]= (( vc[0] + half ) >> offset ); vc[1] = (( vc[1] + half ) >> offset ); vc[2] = (( vc[2] + half ) >> offset ); }; vc[0] = (vc[0] << scale) + screen[0] ; vc[1] = - (vc[1] << scale) + screen[1] ; vc[2] = (vc[2] << scale) + screen[2] ; }; }; if ( obj_vc != null ) c = obj_vc[i]; g.setForeColor(new Color(c)); g.drawLine( va[0] , va[1] , vb[0] , vb[1] ); g.drawLine( va[0] , va[1] , vc[0] , vc[1] ); g.drawLine( vc[0] , vc[1] , vb[0] , vb[1] ); // debug("-paintLine " + obj_nf ); // Vm.debug(c+" <c"); } } public void paintString(Graphics g, String s) { g.drawText ( s , w_ >> 1 , h_ >> 1 ); //debug(s); }/* $Id: */ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ static int bound = ( ( ( (11585*sqrt2) + half ) >> offset ) ); //20070 //+/- 11585 static int[] colormap = null; static final int colormapsize=64; int[] light = { 0 , 0 , - this.one }; //int[] light = { MathFixed.sqrt3,MathFixed.sqrt3,MathFixed.sqrt3 }; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //#undef mesh_nv //#undef mesh_nf //#undef mesh_vv //#undef mesh_vf //#include "MeshFace.java.in" //(Code of a method longer than 65535 bytes) //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // reusable objects /** Viewing Tranformation - check for scale row - TODO */ static int[][] m_ = new int[4][4]; static int[] va = { 0 , 0 , 0 }; static int[] vb = { 0 , 0 , 0 }; static int[] vc = { 0 , 0 , 0 }; static int[] vn = { 0 , 0 , 0 }; /** 3d mesh data (inlined) */ int obj_nv = mesh_cube_nv ; int obj_nf = mesh_cube_nf; int[][] obj_vv = mesh_cube_vv ; int[][] obj_vf = mesh_cube_vf ; int[] obj_vc = mesh_cube_vc ; int[][] obj_trans = null; int[][] obj_norm = null; int[][] obj_center = null; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ public SWDiet3D() { init(); } public SWDiet3D(int w, int h) { init(w,h); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ public void init(int w, int h) { w_ = w; h_ = h; //hw_ = h_ * w_; init(); toggleAnim(0); // 2=none toggleShape(2); //4-11 toggleMode(0); // 10 pixel 13 mapp//12 = zsort+l tick++; } public void init() { screen[0] = w_ / 2; screen[1] = h_ / 2; screen[2] = h_; //screenscale = bound / ( 8 * h_ ) ; //CHECK // =12 < 13
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -