| Autor |
Beitrag |
Aya
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: Fr 22.11.02 01:34
Hi,
das ist zwar nur indirekt ein problem was Delphi betrifft, aber... ich hab keinen der mir dabei helfen kann
Strecke a und b sind bekannt, der Winkel Alpha ebenfalls. alle 3 werte können beliebig groß/klein sein, und ich muß die X,Y Koordinaten von A,B,C,D ausrechnen. Kann mir jemand helfen wie das geht??
Au'revoir,
Aya~
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 22.11.02 03:54
Hier ist die Lösung.
Zur Erklärung:
B bezeichnet den Punkt im nicht rotierten Zustand. Von da habe ich mir eine Formel hergeleitet, mit der man a und b berechnen kann an Hand des Winkels und des Radiuses. Da a und b bekannt sind kann man a' und b' an Hand des Winkels und des Radiuses ausrechnen.
Wichtig: α in meine Zeichnung ist nicht das α in der Zeichnung von Aya. Das α in Aya Zeichnung bekommt man mit 90°-α (meins).
Die Formel liefert für alle vier Punkte die korrekten Absolutwerte. Für die anderen Punkte muß man das Vorzeichen von a und b an Hand des Quadraten bestimmen, da der Satz des Pythagoras nach r (der Hypertenuse) aufgelöst immer positiv ist. Abhilfe schaft hier, wenn man für die andern Punkte Alpha mit der entsprechenden Formel berechnet, also nicht mit 90°-α. Für D wäre α dann 90+α' aus meiner Zeichnung.
α = das gr. Alpha
|
|
Aya 
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: Fr 22.11.02 07:30
huhu,
also ich bin nach wie vor noch der meinung das an deiner rechnung was nicht stimmt...
Wenn du mir das gegenteil beweisen willst, gib mir einfach 8 Formeln um die X und Y Koordinaten von allen 4 Punkten (2x4=8  ) auszurechnen.
Au'revoir,
Aya~
|
|
Trialtom
      
Beiträge: 38
|
Verfasst: Fr 22.11.02 09:39
hallo,
wenn man ein paar winkel sich anguckt habe ich folgende punkte ermitteln können:
α --> winkel alpha
A(-cosα*a+sinα*b;sinα*a+cosα*b)
B(cosα*a+sinα*b;cosα*b-sinα*a)
C(cosα*a-sinα*b;-sinα*a-cosα*b)
D(-cosα*a-sinα*b;-cosα*b+sinα*a)
habe keine probe gemacht, sollte aber richtig sein.
mfg
Tom
|
|
Wolff68
      
Beiträge: 302
Erhaltene Danke: 1
WinXP home
D6 Prof
|
Verfasst: Fr 22.11.02 20:18
Also ich würde mir das auch erstmal ungedreht vorstellen und die Strecke 0-B inclusive Winkel ausrechnen.
Dann kannst über den Winkel ja auch wieder x und y ausrechnen..
Wenn Du bei dem Zurückrechnen nun noch den Verdrehwinkel dazuzählst bekommst Du die X/Y-Werte die Du suchst.
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| //wa, wb, wc, wd = Ungedrehter Winkel zu den Punkten A, B, C, D //c := Länge der Strecke 0-B (Und natürlich auch zu den anderen Punkten) //xa, ya, xb, yb, yb, xc, yc, xd, yd = X/Y-Werte der Punkte A, B, C, D //alpha = Verdrehwinkel (Mathematisch von X-Achse im Gegenuhrzeigersinn)
//Länge der Strecke berechnen c := Sqrt(Sqr(a)+Sqr(b));
//Winkel wb berechnen wb := ArcTan(b/a);
// Ungedrehtes X und Y, nur zum Verständnis xb := Cos(wb) * c; yb := Sin(wb) * c;
// Gedrehtes X und Y alpha := DegToRad(alpha); //Weil Delphi die Winkel im Bogenmaß graucht xb := Cos(wb+alpha) * c; yb := Sin(wb+alpha) * c; |
Die anderen Winkel bekommst Du leicht hin. Quelltext 1: 2: 3:
| wa := pi-wb; wc := wa*-1; wd := wb*-1; |
(Alles ungetestet)
_________________ "Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
|
|
Aya 
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: So 24.11.02 05:34
| Trialtom hat folgendes geschrieben: | hallo,
wenn man ein paar winkel sich anguckt habe ich folgende punkte ermitteln können:
α --> winkel alpha
A(-cosα*a+sinα*b;sinα*a+cosα*b)
B(cosα*a+sinα*b;cosα*b-sinα*a)
C(cosα*a-sinα*b;-sinα*a-cosα*b)
D(-cosα*a-sinα*b;-cosα*b+sinα*a)
habe keine probe gemacht, sollte aber richtig sein.
mfg
Tom |
Hi,
also das klappt schon fast... nur, was für einen Winkel muß ich denn nehmen???
Wenn ich das von 0 -> 360 in einer schritten mache, dreht es sich insgesammt über 100 mal... wenn ich denn z.B. Alpha/56,754 rechne und damit dann die Koordinaten ausrechne hat sich das "H" nach 360 genau einmal gedreht... allerdings brauche ich die Koordinaten auf 5 Stellen nach dem Komma genau
Wär super wenn du mir da noch helfen könntest.
Au'revoir,
Aya~
|
|
Cashels
      
Beiträge: 167
|
Verfasst: So 24.11.02 15:28
| Aya hat folgendes geschrieben: | | Wenn ich das von 0 -> 360 in einer schritten mache, dreht es sich insgesammt über 100 mal... wenn ich denn z.B. Alpha/56,754 rechne und damit dann die Koordinaten ausrechne hat sich das "H" nach 360 genau einmal gedreht... |
Hallo,
für saemtliche trigonometrische Funktionen in Delphi werden die Winkel in Bogenmaß benutzt. Das ist nur ne andere Darstellungsskala für Winkel. Du kennst die von 0 bis 360 Grad. In Bogenmaß haben die Winkel einen Wert zwischen 0 und 2*Pi... (2*Pi ist genau der Wert den du erhälts in deiner Division 360/56,754  )... Nun kannst du bischen deinen Kopf anstrengen und die Winkel umrechnen, oder für ganz faule beutzt du einfach die Delphi Funktio DegToRad aus der Math unit.
Gruss,
Tom
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 24.11.02 15:54
@Aya: Das habe ich dir doch auch schon per ICQ gesagt!
|
|
Trialtom
      
Beiträge: 38
|
Verfasst: So 24.11.02 17:29
Ich verstehe die frage nicht:
Du hattest geschrieben:
"also das klappt schon fast... nur, was für einen Winkel muß ich denn nehmen???"
aber für alpha kannst du jeden beliebigen winkel einsetzen, mit beliebiger länge der strecke a, wie auch b
tippt doch einfach ein: für zum beispiel punkt B a=3 cm b=5cm Alpha=56.754:
B(cos(56.754°)*3+sin(56.754°)*5;cos(56.754°)*5-sin(56.754°)*3) =
B(5.826326693;0.2322009263)
die formeln für die punkte sind gültig für alpha elemente der reelen zahlen.
|
|
Aya 
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: Mo 25.11.02 01:19
Hi,
es lag an der sache mit DegToRad
Au'revoir,
Aya
|
|