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 + -
显示快捷键?