Zitat:
Nee, das Rechteck ist schon eindeutig?
Nope. Der Winkel lässt sich doch aus den Punkten berechnen.
Aber aus deiner Skizze geht hervor, dass du den Winkel zwischen der horizontalen und der oberen Seite meinst. dann passt's.
Ich würde das Koordinatensystem um den Winkel drehen. Danach suchst du das achsparallele Rechteck und dreht die neuen zwei Punkte wieder zurück.
Die Formel kannst du dann auch in eine Zeile schreiben und schreiben "ist ja anschaulich korrekt"
Ich poste hier mal frech den MATLAB-Quellcode:
Code:
for phi = 0:0.01:2
P1 = [1;4];
P3 = [3;2];
%phi = 0.5;
R = [cos(phi), -sin(phi); sin(phi), cos(phi)];
NewP = R * [P1,P3];
P2 = R' * NewP([1; 4]);
P4 = R' * NewP([3; 2]);
plot([P1(1), P2(1), P3(1), P4(1), P1(1)], [P1(2), P2(2), P3(2), P4(2), P1(2)], 'o-'); daspect([1 1 1])
xlim([-1 6]);
ylim([-1 6])
drawnow;
pause(0.01)
end
Du siehst (vielleicht) dass ich die gegebenen Punkte P1 und P3 getauft habe. P2 errechnet sich dann nach R' * (xx(R*P1); yy(R*P2))
wobei xx(k) bedeuten soll "x-Komponente des Vektors k" und yy analog. R' ist die transponierte von R.
P4 = R' * (xx(R*P3); yy(R*P1))