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

📄 swdiet3d.java

📁 SWDiet3D is a port to SuperWaba of the Diet3D, the free 3D engine for J2ME mobiles, written by Phili
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
            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 + -