1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
|
public class Terrain {
private int scale = 20;
private int breite = 600;
private int hoehe = 600;
private double x;
private double y;
private double z;
private double winkel = Math.toRadians(60);
private double[][] rotationsmatrix = new double[4][4];
private double[] spaltenvektor = new double[4];
private Point3D p1,p2,p3,p4;
public Terrain() {
}
public double abstand(double x,double y,double z){
double abstand = 1000/(Math.sqrt((x*x)+(y*y)+(z*z)));
return abstand;
}
public Point3D translate(double xt,double yt,double zt){
Point3D p = new Point3D(xt+breite/2,yt + hoehe/2,zt);
return p;
}
public Point3D rotateX(double winkel,double x,double y,double z){
Point3D p = new Point3D(x,(y*Math.cos(winkel)-z*Math.sin(winkel)),y*Math.sin(winkel)+z*Math.cos(winkel));
return p;
}
public void rotateY(double angle,double x,double y,double z){
}
public void rotateZ(double angle,double x,double y,double z){
}
public void render(Graphics g){
g.translate(breite/2,hoehe/2);
for(int y = 0;y<hoehe-scale;y+=scale){
for(int x = 0;x<breite-scale;x+=scale){
p1 = new Point3D(rotateX(winkel,x/abstand(x,y,z),(y+scale)/abstand(x,y+scale,z),z).getX(),rotateX(winkel,x/abstand(x,y,z),(y+scale)/abstand(x,y+scale,z),z).getY(),z);
p2 = new Point3D(rotateX(winkel,(x+scale)/abstand(x+scale,y,z),(y+scale)/abstand(x,y+scale,z),z).getX(),rotateX(winkel,(x+scale)/abstand(x+scale,y,z),(y+scale)/abstand(x,y+scale,z),z).getY(),z);
p3 = new Point3D(rotateX(winkel,x/abstand(x,y,z),y/abstand(x,y,z),z).getX(),rotateX(winkel,x/abstand(x,y,z),y/abstand(x,y,z),z).getY(),z);
p4 = new Point3D(rotateX(winkel,(x+scale)/abstand(x+scale,y,z),y/abstand(x,y,z),z).getX(),rotateX(winkel,(x+scale)/abstand(x+scale,y+scale,z),y,z).getY(),z);
g.drawLine((int)p1.getX(),(int)p1.getY(),(int)p2.getX(),(int)p2.getY());
g.drawLine((int)p2.getX(),(int)p2.getY(),(int)p4.getX(),(int)p4.getY());
g.drawLine((int)p4.getX(),(int)p4.getY(),(int)p3.getX(),(int)p3.getY());
g.drawLine((int)p3.getX(),(int)p3.getY(),(int)p1.getX(),(int)p1.getY());
g.drawLine((int)p1.getX(),(int)p1.getY(),(int)p4.getX(),(int)p4.getY());
g.drawLine((int)p3.getX(),(int)p3.getY(),(int)p2.getX(),(int)p2.getY());
}
}
} |