Hallo,
ich habe ein Problem. Ich möchte einen dreidimensionalen Vektor (einfach einen Pfeil) drehen. Also ich will nicht den Vektor selbst drehen, sondern nur den angezeigten. Dabei kommen aber seltsame Werte raus.
Das ist meine Methode um die Werte von 3d auf 2d zu bringen.
Vektor ist eine Klasse, die (bis jetzt) genau 3 public double Werte enthält, nämlich x, y und z.
dx, dy und dz sind die jeweiligen Drehfaktoren in Grad.
xt und yt sind die Koordinaten, die später auf dem Bildschirm angezeigt werden sollen, und xUrsprung und yUrsprung sind die Werte des Ursprungs des Koordinatensystems auf dem Screen, da es beliebig verschoben werden kann.
Was ist mein Fehler?
ich habe ein Problem. Ich möchte einen dreidimensionalen Vektor (einfach einen Pfeil) drehen. Also ich will nicht den Vektor selbst drehen, sondern nur den angezeigten. Dabei kommen aber seltsame Werte raus.
Java:
public void drawVektor(Graphics g, Vektor v){
double x1, x2, x3, y1, y2, y3, z1, z2, z3;
//Rotation um die z-Achse:
x1 = v.x * Math.cos(Math.PI*dz/180) - v.y * Math.sin(Math.PI*dz/180);
y1 = v.x * Math.sin(Math.PI*dz/180) + v.y * Math.cos(Math.PI*dz/180);
z1 = v.z;
//Rotation um die x-Achse:
x2 = x1;
y2 = y1 * Math.cos(Math.PI*dx/180) - z1 * Math.sin(Math.PI*dx/180);
z2 = y1 * Math.sin(Math.PI*dx/180) + z1 * Math.cos(Math.PI*dx/180);
//Rotation um die y-Achse:
x3 = z2 * Math.sin(Math.PI*dy/180) + x2 * Math.cos(Math.PI*dy/180);
y3 = y2;
z3 = z2 * Math.cos(Math.PI*dy/180) - x2 * Math.sin(Math.PI*dy/180);
double xt = 1 * x3 / (0.1 + z3);
double yt = 1 * y3 / (0.1 + z3);
drawArrow(g, xUrsprung,yUrsprung,
xUrsprung+(int)xt,
yUrsprung-(int)yt);
}
Das ist meine Methode um die Werte von 3d auf 2d zu bringen.
Vektor ist eine Klasse, die (bis jetzt) genau 3 public double Werte enthält, nämlich x, y und z.
dx, dy und dz sind die jeweiligen Drehfaktoren in Grad.
xt und yt sind die Koordinaten, die später auf dem Bildschirm angezeigt werden sollen, und xUrsprung und yUrsprung sind die Werte des Ursprungs des Koordinatensystems auf dem Screen, da es beliebig verschoben werden kann.
Was ist mein Fehler?