micro3dmidlet.java

来自「3D手机游戏开发实例源代码 3D迷宫游戏的演示程序」· Java 代码 · 共 116 行

JAVA
116
字号
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;
import com.mascotcapsule.micro3d.v3.AffineTrans;
import com.mascotcapsule.micro3d.v3.Vector3D;
public class Micro3DMIDlet extends MIDlet  {
  
    protected void startApp() {
      multiply();
      destroyApp(false);
      notifyDestroyed();   
      
    }
    public void multiply(){
    	int dx=3,dy=4,dz=5;
      AffineTrans affinetrans = new AffineTrans();
      affinetrans.setIdentity();
      affinetrans.m03 += dx; //translate x
      affinetrans.m13 += dy; //translate y
      affinetrans.m23 += dz; //translate z
      int[]a = new int[12];
      affinetrans.get(a);
    //  outputMatrix(a);
      affinetrans.setIdentity();
      AffineTrans afScale = new AffineTrans();
      int scaleX = 3,scaleY = 4,scaleZ = 5;
      afScale.set(scaleX, 0, 0, 0, 0, scaleY, 0, 0, 0, 0, scaleZ, 0);
      affinetrans.mul(afScale);
      affinetrans.get(a);
     // outputMatrix(a);
     
      affinetrans.setIdentity();
      int degreeX = 700,degreeY = 420,degreeZ = 600;      
      AffineTrans afRotate = new AffineTrans();
  //    afRotate.setIdentity();
      afRotate.setRotationX(degreeX);
      affinetrans.mul(afRotate);

    //  afRotate.setIdentity();
      afRotate.setRotationY(degreeY);
      affinetrans.mul(afRotate);
      
   //   afRotate.setIdentity();
      afRotate.setRotationZ(degreeZ);
      affinetrans.mul(afRotate);
    //  affinetrans.setIdentity();
      //  affinetrans.setRotationX(degreeX);  
           //   affinetrans.setRotationY(degreeY); 
                   // affinetrans.setRotationZ(degreeZ); 
      Vector3D v = new Vector3D(0,4096,0);
      affinetrans.setIdentity();
      afScale.set(3, 0, 0, 0, 0, 4, 0, 0, 0, 0, 5, 0);
      affinetrans.mul(afScale);
      Vector3D v1 = affinetrans.transform(v);
      outputVector3D(v1);
   /*   affinetrans.setIdentity();
      affinetrans.setRotation(v, 512);
      affinetrans.get(a);
      outputMatrix(a);
      
      afRotate.setIdentity();
      afRotate.setRotationX(512); 
      afRotate.get(a);
      outputMatrix(a);*/
   /*   AffineTrans affinetrans_2 = new AffineTrans();
    	int[] a = new int []{
	      1, 		0, 		0, 		1,
	      0, 		1, 		0, 		2,
	      0,		0,		1,		3,
      };
    	int[] b = new int []{
	      2, 		0, 		0, 		0,
	      0, 		3, 		0, 		0,
	      0,		0,		9,		0,
      };
      int[]c = new int[12];
      affinetrans_1.set(a);
      affinetrans_2.set(b);
      affinetrans_1.mul(affinetrans_2);
      affinetrans_1.rotationX(29) ;
      affinetrans_1.get(c);
      outputMatrix(c);*/
    }
    public void outputVector3D(Vector3D v){
       String  output = "The  Data  of  Vector3D:\n";  
       output += v.getX()+"  "+ v.getY()+"  "+v.getZ();
       System.out.println(output);					//控制台输出
    }
    public void setget(){
      AffineTrans affinetrans = new AffineTrans();

    	int[] a = new int []{
	      1, 		2, 		3, 		4,
	      5, 		6, 		7, 		8,
	      9,		10,		11,		12,
      };
      int[]b = new int[12];
      affinetrans.get(b);
      outputMatrix(b);
      affinetrans.set(a);    					//根据a设置affinetrans的内容
      affinetrans.get(b);
      outputMatrix(b);
    	}
    public void outputMatrix(int[] b){
       String  output = "The  Data  of  affinetrans array:\n";  
       for(int i=0;i<3;i++){          
          for(int j=0;j<4;j++){  								//输出affinetrans对象的内容  
             output += "  "+b[i*4+j]+"  ";  
          }  
          output  +=  "\n";  
        }  
       System.out.println(output);					//控制台输出
    }
    protected void destroyApp(boolean unconditional) {}
    protected void pauseApp() {}
}

⌨️ 快捷键说明

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