Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Linie um bestimmten Winkel drehen (https://www.delphipraxis.net/180198-linie-um-bestimmten-winkel-drehen.html)

milos 29. Apr 2014 21:10

Linie um bestimmten Winkel drehen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich würde gerne eine Line drehen können und deren Start und Endkoordinaten ausrechnen können.

Kann mir einer dazu einen Tipp gegebn?

MfG

himitsu 29. Apr 2014 21:30

AW: Linie um bestimmten Winkel drehen
 
Tipp: Sinus und Cosinus?


Aber welches X:Y suchst du denn jeweils?
Die Zeichnung wiederspricht etwas deiner Beschreibung.

- Die alten Endpunkte nach der Dreheung?
- Die Schnittpunkte der Linie mit dem Rand, nach der Drehung?

1. Du hast den Punkt, um welchen gedreht werden soll.
Damit berechnest du den Winkel und die Endfernung zu den Endpunkten,
dann kannst du den Drehwinkel dazurechnen
und über den neuen Winkel mit Entfernung die neuen Endpunkte berechnen

2. Du hast die Endpunkt, die Drehachse (den Schnittpunkt, um welchen gedreht wird).
Neuen Drehwinkel dazuaddieren und die Schnittpunkte mit den Linien der Rahmen berechnen.

Popov 30. Apr 2014 00:36

AW: Linie um bestimmten Winkel drehen
 
Betrachten wir deine Zeichnung, machen zwei Dreiecke draus und nehmen den Schnittpunkt als Winkel Alpha an. Nehmen wir an der Winkel wind nicht größer 90°. Die halbe alte Linie ist (noch) die Ankathete (b), die neue Linie (genauso lang wie b am Anfang) wäre dann die Hypotenuse (c). Dreieck ist dann rechtwinkelig, gesucht (neue) a und b. Bekannt sind alle Winkel, also Alpha, Gamma (90°)und Beta (180 - Alpha und Beta).
Code:
a / sin(alpha) = b / sin(beta) = c / (gamma)

a := (c * sin(alpha)) / sin(gamma)
b := (c * sin(beta)) / sin(gamma)
Code:
x2 = x1 - a
y2 = y1 + b
a und b gelten dann auch für die untere Linie und die dortigen x2 und y2.

Ist der Winkel größer 90°, einfach von 180° abziehen, nur zu y1 eine halbe Länge dazu zählen.

Ok, vermutlich geht das einfacher, ist auch schon lange her wo ich das in der Schule hatte. Ich denke mir man kann die Position auch mit Sin und Cos zusammen berechnen (ist ja letztendlich ein Kreis). Ist aber schon zu spät für kompliziertes Denken.

Bjoerk 30. Apr 2014 10:53

AW: Linie um bestimmten Winkel drehen
 
Ja. Geht einfacher. Man transformiert die Punkte P1 und P2 in den Drehpunkt. Danach mit (cos/sin, -sin/cos) rotieren und anschließend wieder ins ursprüngliche KOO-System zurück transformieren. Die drei Schritte kann man auch in einer einzigen Formel zusammenfassen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz