Hallo!
Ich beschäftige mich gerade ein wenig mit zweidimensionalen Objekten.
Leider habe ich ein Problem eine Linie um ihren eigenen Endpunkt zu drehen. Dh. es sind x1/y1 sowie x2/y2 gegeben und die Linie soll um den Punkt x1/y1 gedreht werden. Dazu sollen dann die neuen Koordinaten für x2/y2 berechnet werden.
Leider stimmt irgendetwas an meinen Berechnungen nicht und die Linie wird immer viel zu lang und wurde auch nicht um den richtigen Winkel gedreht...
Hier mein Code:
Zur veranschaulichung eine kleine Skizze im Anhang.
Ich beschäftige mich gerade ein wenig mit zweidimensionalen Objekten.
Leider habe ich ein Problem eine Linie um ihren eigenen Endpunkt zu drehen. Dh. es sind x1/y1 sowie x2/y2 gegeben und die Linie soll um den Punkt x1/y1 gedreht werden. Dazu sollen dann die neuen Koordinaten für x2/y2 berechnet werden.
Leider stimmt irgendetwas an meinen Berechnungen nicht und die Linie wird immer viel zu lang und wurde auch nicht um den richtigen Winkel gedreht...
Hier mein Code:
Code:
void Turn_Line(int number, double alpha)
{
//Laenge der Linie berechnen
double dx = line[number].x2 - line[number].x1;
double dy = line[number].y2 - line[number].y1;
if (dx<0) dx= dx*-1;
if (dy<0) dx= dy*-1;
double lenght;
if (dx!=0 && dy!=0) lenght = sqrt(dx*dx / dy*dy);
else if (dy==0) lenght=dx;//Pruefen, ob es eine Vertikale
else if (dx==0) lenght=dy;//oder Horizontale sein koennte
//Beta berechnen
double beta = (180-alpha)/2;
//Laenge der Verschiebung berechnen
double AB = 2*(sin(beta)*lenght);
//X und Y Verschiebung berechnen
double ymov = sin(beta)*AB;
double xmov = cos(beta)*AB;
line[number].x2+=xmov;
line[number].y2-=ymov;
}