Dreieck um einem Winkel drehen. kann jemand helfen?

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Erster Schritt: Bestimme den Mittelpunkt des Dreiecks.

Zweiter Schritt: Verschiebe das Dreieck so, dass dieser Mittelpunkt auf dem Nullpunkt liegt - also die Koordinaten des Mittelpunkts von den Dreieckspunkten subtrahieren.

Dritter Schritt: Bestimme die Rotationsmatrix für den Winkel alpha, um den du drehen willst:

cos(alpha) -sin(alpha)

sin(alpha) cos(alpha)

Vierter Schritt: führe die Drehung durch, indem du die Dreieckspunkte mit der Matrix multiplizierst.

Fünfter Schritt: verschiebe das Dreieck wieder zurück an den Anfangsplatz (also die Koordinaten wieder addieren, die du im zweiten Schritt abgezogen hast).

Woher ich das weiß:Studium / Ausbildung – Dipl.-Math. :-)

Illidan18 
Beitragsersteller
 24.11.2010, 19:02

Rotationsmatrix bestimmen bedeutet Winkel für alpha einsetzen und dann zusammen mit dem vierten Schritt jeden Eckpunkt vom Dreieck mit dieser Matrix multiplizieren?

FataMorgana2010  24.11.2010, 22:49
@Illidan18

Ja, ganz genau. Für die Drehung von 180°, wie du sie haben willst, ergibt sich als Matrix

-1 0

0 -1

Angenommen, das Dreieck liegt so, dass der obere Punkt - die Spitze - auf (0,1) liegt. Dann ist das Produkt aus (0,1) und der Matrix gerade (0,-1), also genau das, was du willst.

Wie wärs mit ner Punktspiegelung mit Spiegelpunkt in der Mitte zwischen alter Dreiecksspitze und neuer Position. Da das Dreieck ja 2 gleichlange Schenkel hat, bewirkt die Spiegelung ja dasselbe wie Drehung und Verschiebung, ist also mit deinem gewünschten Bild identisch.

Wenn Du keine Rotation um den oberen Dreieckspunkt haben willst, nimm diesen als Spiegelungspunkt und spiegele die beiden unteren Dreieckspunkte daran.

Du willst im Prinzip nicht um den Mittelpunkt drehen, sondern um den oberen - weil die Spitze ja zwar nach unten zeigt, aber am gleichen Punkt verbleibt, korrekt?!


Illidan18 
Beitragsersteller
 23.11.2010, 14:45

Ne ne, entweder wir verstehen uns falsch oder ich kann dir nicht ganz folgen :). Ich will das Dreieck um irgendeine Grad Zahl zwischen 0 und 360 drehen. Das soll aber nicht auf dem Koordinatensystem dann gedreht werden (sozusagen das es dann irgendwo im -x und -y Abschnitt ist) sondern NUR das Dreieck selbst soll sich drehen. Wie gesagt, ich will NICHT nur für 180° die Berechnung machen sondern allgemein für einen Winkel. Mit Google Suche habe ich halt etwas mit Polarkoordinaten gefunden und das hat halt den Zusammenhang mit dem Mittelpunkt des Dreiecks. Aber wie gesagt, es funktioniert nicht wirklich =/.

aleph  23.11.2010, 14:52
@Illidan18

Ok, verstehe Dich.

Du willst also doch eine Rotation mit Hilfe von Polarkoordinaten.

Nur, dann musst Du den Ursprung auf den Mittelpunkt des Dreiecks festlegen und von dort mit Hilfe des Rotationswinkels die neuen gedrehten Werte ermitteln!

Nicht vom Null-Ursprung aus!

Alternativ kannst Du die Koordinaten transformieren, so dass der Mittelpunkt des Dreiecks im Null-Ursprung ist und dann drehen - danach Rücktransformation und fertig!

Illidan18 
Beitragsersteller
 23.11.2010, 22:46
@aleph

Kannst du das vielleicht etwas weiter erläutern mit Rotationswinkel die neuen Werte ermitteln?

Ich habe schon soviel versucht. Was ich halt berechnet habe ist x = rcos(a) und y = rsin(a). r ist der Abstand von den alten Koordinaten zum Mittelpunkt.

Du nimmst den Mittelpunkt des Dreieckes als (0/0) und legst es damit in ein Koordinatensystem. Es ist dann entscheident, wie die entfernung vom Mittelpunkt zur Spitze ist, daraus lassen sich die Koordinaten der Spitze ablesen. Dann lässt du den Zielpunkt der Spitze berechnen, indem du die Koordinaten der Spitze mit der genannten Matrix multiplizierst. Das gleiche wiederholst du mit den übrigen Punkten und lässt dann ein Dreieck zeichnen.