x/y versatz von einem rechteck bei rotation

Neue Frage »

master lisa Auf diesen Beitrag antworten »
x/y versatz von einem rechteck bei rotation
ich habe folgendes problem, es geht hier um ein Programm welches ich gerade schreibe, ich hoffe ihr könnt mir weiterhelfen, meine stärke sind logische operationen und datenbank strukturen und nicht geometrie Augenzwinkern
Ich habe ein rechteck, dieses rechteckt hat folgende attribute:
width
height
xpos
ypos
und rotation

nun habe ich z.b. eine rotation von 45°!
wie kann ich nun berechnen um wieviel sich die eckpunkte verschoben haben wenn das rechteck um den punkt linksoben bzw. den mittelpunk gedreht wurde?

bsp:
vor der rotation:
width: 20px
height: 20px
xpos: 10px
ypos: 10px
rotation: 0°

nach der rotation:
width: 20px
height: 20px
xpos: 13.616px
ypos: 0.878px
rotation: 30°

wie kommt dieser x/y-pos versatz zu stande? wie lautet die formel ?

Ich hoffe ich habe mich verständlich ausgedrückt, ich möchte eigentlich nur einen mathematischen ansatz, eine formel wäre natürlich auch sehr geil ...

grüsse aus der bonner altstadt
flo
Dreher Auf diesen Beitrag antworten »
Drehmatrix
Hallo,
siehe Dir das mal an:
http://de.wikipedia.org/wiki/Drehmatrix
master lisa Auf diesen Beitrag antworten »

mmh , sorry ich bin ziemlicher laie, ist alles etwas lange her Augenzwinkern

ich brauche wohl die Aktive Drehmatrix (Punkt wird gedreht), aber wie lauten denn die formeln dafür?
unglücklich

folgende werte habe ich auch noch :

0.8660254037844385
-0.4999999999999998
0.4999999999999998
0.8660254037844385

anhand 3 dieser werte errechne ich die rotation, wie kann ich denn den versatz errechnen?

function winkelCalc($wert1,$wert2,$wert3){
if(acos($wert2)*(180/pi())>acos($wert3)*(180/pi())){
$winkel=acos($wert1)*(180/pi());
} else if (acos($wert2)*(180/pi())==acos($wert3)*(180/pi())){
$winkel=0;
} else {
$winkel=(-1)*(acos($wert1)*(180/pi()));
}
return round($winkel,3);
}

damit errechne ich den winkel!
Dreher Auf diesen Beitrag antworten »

Hallo,
nochmal zur Ausgangsfrage.
Drehung des Rechtecks mit den Eckpunkten A, B, C und D um den Punkt linksoben (A):
Das Koordinatensystem wird so gewählt, dass der Punkt A im Ursprung liegt. Dann gilt allgemein:



In Deinem Beispiel ist dann b = 20px (width) und d = 20px (height) und xpos=0 sowie ypos=0. Dann werden die Vektoren gedreht, z. B.:



Zu wird dann noch der Versatz addiert, hier also jeweils 30px (10px für die Verschiebung in den Ursprung und 20px für width und height).

Drehung um den Mittelpunkt:
Die Vorgehensweise ist genauso, nur sind die Vektoren jetzt:

master lisa Auf diesen Beitrag antworten »

super danke danke ! Gott
es wird nun nur um den punkt A gedreht, der mittelpunkt interessiert mein programm nicht mehr smile

ich werde heute abend bzw. morgen früh die formeln durchgehen und versuchen einzusetzen .. hab sicher morgen noch fragen Forum Kloppe
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »