Entwickler-Ecke
Sonstiges (Delphi) - Kleines Matheproblem
Aya - Fr 22.11.02 01:34
Titel: Kleines Matheproblem
Hi,
das ist zwar nur indirekt ein problem was Delphi betrifft, aber... ich hab keinen der mir dabei helfen kann :cry:
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~
Delete - Fr 22.11.02 03:54
Hier [
http://www.luckie-online.de/downloads/bild1.zip] 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 - 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 - 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 - 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)
Aya - 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 - 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 8) )... 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
Delete - So 24.11.02 15:54
@Aya: Das habe ich dir doch auch schon per ICQ gesagt!
Trialtom - 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 - Mo 25.11.02 01:19
Hi,
es lag an der sache mit DegToRad
Au'revoir,
Aya
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!