Position nach Rotation < Längen+Abst.+Winkel < Lin. Algebra/Vektor < Oberstufe < Schule < Mathe < Vorhilfe
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 15:09 Fr 04.04.2008 | Autor: | fuempf |
bin weder schüler noch student, sondern brauche eine formel für ein computerprogramm.
zwei gleichgrosse rechtecke liegen aufeinander. rechteck 2 wird um den winkelwert X (links herum) rotiert. welche positionsverschiebungen muss man an rechteck 2 vollziehen, damit..
1) die ecke unten rechts von rechteck 1 punktgenau auf der ecke unten links von rechteck 2 liegt?
2) die ecke oben rechts von rechteck 1 punktgenau auf der ecke oben links von rechteck 2 liegt?
(Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.)
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:58 Fr 04.04.2008 | Autor: | fuempf |
> Wie liegen die beiden denn aufeinander - exakt Ecke auf Ecke?
ja
> Um welche Rotationsachse wird gedreht? Um den Mittelpunkt des Rechtecks?
ja
> Und wie darf Rechteck 2 gedreht werden - beliebig? Linksrum und rechtsrum?
linksherum
> Nachtrag: ich sehe gerade Positionsverschiebungen - das heißt, das zweite Rechteck darf gar nicht gedreht sondern nur verschoben werden?
erst wird es um einen bekannten winkel rotiert und dann soll es verschoben werden dass die genannten ecken aufeinanderliegen.
> hast du mit Matrizen schon mal gerechnet?
gott bewahre, nein!
>Oder brauchst du nur ein "fertiges Ergebnis"? (Was wir dir aber nicht unbedingt direkt geben können...)
ja, eine formel brauche ich. fertig und einsatzbereit. ohne dass ich noch selber nachdenken muss. dass das in der regel hier nicht geboten wird, habe ich mir schon fast gedacht, weshalb ich schrieb dass ich weder schüler noch student bin.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:59 Fr 04.04.2008 | Autor: | abakus |
> bin weder schüler noch student, sondern brauche eine formel
> für ein computerprogramm.
>
> zwei gleichgrosse rechtecke liegen aufeinander. rechteck 2
> wird um den winkelwert X (links herum) rotiert. welche
> positionsverschiebungen muss man an rechteck 2 vollziehen,
> damit..
>
> 1) die ecke unten rechts von rechteck 1 punktgenau auf der
> ecke unten links von rechteck 2 liegt?
>
> 2) die ecke oben rechts von rechteck 1 punktgenau auf der
> ecke oben links von rechteck 2 liegt?
>
> (Ich habe diese Frage in keinem Forum auf anderen
> Internetseiten gestellt.)
Hallo,
für eine Antwört wären folgende Informationen erforderlich:
-Welche Koordinaten hat der Mittelpunkt des Rechtecks?
(0;0) wäre ideal, muss aber nicht sein.
-Wie breit und wie hoch ist das Rechteck?
Viele Grüße
Abakus
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:03 Fr 04.04.2008 | Autor: | fuempf |
position, länge und breite sind bekannt.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:20 Fr 04.04.2008 | Autor: | abakus |
> position, länge und breite sind bekannt.
Schön für dich.
Da ich es nicht weiß, kann ich nur einen sehr allgemeinen Tipp geben, den du dir dann doch selber zurechtbasteln musst.
Nehmen wir mal an, der Mittelpunkt hätte die Koordinaten (0;0).
Dann haben alle Eckpunkte den gleichen Abstand (R, siehe Skizze) vom Mittelpunkt.
Ihre Lage unterscheidet sich nur in ihrem Winkel zur x-Achse.
In der Skizze hat C den Winkel [mm] \alpha, [/mm] die Winkel der anderen 3 Punkte sind 180°- [mm] \alpha, 180°+\alpha [/mm] und [mm] 360°-\alpha. [/mm] (Wahrscheinlich arbeitest du im Bogenmaß, statt 180° musst du dann [mm] \pi [/mm] verwenden).
[Dateianhang nicht öffentlich]
Mit R und dem jeweiligen Winkel kann man die Koordinaten (siehe Skizze, Beschriftung bei C) jedes Eckpunkts angeben
R bekommst du aus deinen Seitenlängen heraus (Pythagoras!), [mm] \alpha [/mm] mit der arctan-Funktion.
Bei einer Drehung um den Winkel X musst du den Drehwinkel X eben noch zu dem Winkel [mm] \alpha [/mm] bzw. zu [mm] 180°-\alpha, 180°+\alpha [/mm] und [mm] 360°-\alpha [/mm] dazuaddieren.
Wenn die Expunkte so wie von dir beschrieben aufeinanderliegen sollen, beträgt der Drehwinkel gerade [mm] 2\alpha [/mm] bzw. [mm] 180°-2\alpha.
[/mm]
Viele Grüße
Abakus
Dateianhänge: Anhang Nr. 1 (Typ: gif) [nicht öffentlich]
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 20:18 Fr 04.04.2008 | Autor: | fuempf |
schlimmer schulflashback, aber ich probiere es mal.
in welchem winkel liegt denn c zur mitte? °45? und für die anderen positionen im uhrzeigersinn jeweils °90 addiert? also oben mittig = °0? (bogenmass trifft übrigens nicht zu)
R = (wurzel[L² + B²] / PI) / 2
und die formel in der ecke rechnet wohl den abstand vom mittelpunkt für jeweils die x und y achse aus. welches ist x und welches y (cos/sin)? konnte ich leider nicht herausfinden, da bei meinem versuch zwar immerhin ein richtiges ergebnis herauskam, aber leider das gleiche egal ob cos oder sin.
und zur bekannten länge, breite und position. ich suche doch eine formel. also von mir aus nennen wir die bekannten platzhalter l,b,p.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 23:01 Fr 04.04.2008 | Autor: | abakus |
> schlimmer schulflashback, aber ich probiere es mal.
>
> in welchem winkel liegt denn c zur mitte? °45?
Nein, im allgemeinen nicht. 45° würde nur beim Quadrat zutreffen.
Es gilt [mm] tan(\alpha)=\bruch{b}{2}:\bruch{a}{2}=b:a [/mm] (wenn a die Breite und b die Höhe des Rechteck ist).
Demzufolge bekommen wir Alpha mit der Umkehrfunktion des Tangens, also [mm] \alpha=arctan(b/a).
[/mm]
> und für die
> anderen positionen im uhrzeigersinn jeweils °90 addiert?
> also oben mittig = °0? (bogenmass trifft übrigens nicht
> zu)
>
> R = (wurzel[L² + B²] / PI) / 2
Ohne [mm] \pi. R=\wurzel{a^2+b^2}/2
[/mm]
>
> und die formel in der ecke rechnet wohl den abstand vom
> mittelpunkt für jeweils die x und y achse aus. welches ist
> x und welches y (cos/sin)? konnte ich leider nicht
> herausfinden, da bei meinem versuch zwar immerhin ein
> richtiges ergebnis herauskam, aber leider das gleiche egal
> ob cos oder sin.
Die erstgenannte Koordinate ist die x-Koordinate (waagerecht mit cos), dann kommt die y-Koordinate (senkrecht mit sin)
>
>
> und zur bekannten länge, breite und position. ich suche
> doch eine formel. also von mir aus nennen wir die bekannten
> platzhalter l,b,p.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 00:09 Sa 05.04.2008 | Autor: | fuempf |
ich verstehe den ganzen kram nicht. habe mir jetzt den halben tag den kopf drüber zerbrochen und mir qualmt der kopf. da ich kein cos/sin in der schule hatte gibt es auch zu viele dinge die ich noch nachfragen müsste und das dauert erstens zu lange und ist zweitens zu nervig für alle beteiligten. abgesehen davon muss ich noch das komplette script programmieren, für welches ich diese formel brauche. also bitte etwas erbarmen.
wäre nett wenn sie oder wer anders die formel schreiben könnte. hier nochmal die aufgabe.
zwei gleichgrosse rechtecke liegen exakt aufeinander. rechteck 2 wird um den winkelwert W (kein bogenmaß) um den mittelpunkt des rechtecks rotiert (links herum). welche verschiebungen muss man an rechteck 2 vollziehen, damit die ecke unten rechts von rechteck 1 punktgenau auf der ecke unten links von rechteck 2 liegt?
länge: l
breite: b
xpos : x
ypos : y
|
|
|
|
|
Okay ich schreib jetzt einfach mal alles auf was mir so dazu einfällt.
Gegeben sind zunächst zwei kongruente (genau gleich große) Rechtecke mit den folgenden Koordinaten:
[Dateianhang nicht öffentlich]
Das Zentrum der Drehbewegung bildet also [mm] P_{D}(xpos+b;ypos+h/2).
[/mm]
Dies wird im Folgenden als "Koordinatenursprung" angesehen.
Bei der Drehung ist es notwendig, die Abstände der zu drehenden Punkte zum Koordinatenursprung zu kennen. Der Abstand zweier Punkte [mm] P_{1}(x_{1}|y_{1}) [/mm] und [mm] P_{2}(x_{2}|y_{2}) [/mm] berechnet sich durch
[mm] \overline{P_{1}P_{2}} [/mm] = [mm] \wurzel{(x_{2} - x_{1})^{2} + (y_{2} - y_{1})^{2}}
[/mm]
(Satz des Pythagoras).
Die Abstände der vier Punkte zum Koordinatenursprung sind im einzelnen:
(Siehe Beschriftung von oben)
[mm] \overline{P_{1}P_{D}} [/mm] = [mm] \wurzel{((xpos + \bruch{b}{2}) - xpos)^{2} + (ypos + \bruch{h}{2} - ypos)^{2}} [/mm] = [mm] \wurzel{(\bruch{b}{2})^{2} + (\bruch{h}{2})^{2}}
[/mm]
(Logisch, das ist Anwendung des Satz des Pythagoras auf ein kleines Dreieck mit den Maßen [mm] \bruch{b}{2} [/mm] und [mm] \bruch{h}{2}, [/mm] wie wir es bei der Abstandsbestimmung haben)
Die Abstände der Seiten sind natürlich alle gleich und werden sich auch nach der Drehung nicht verändert haben. Nun müssen wir noch wissen, in welchem Winkel die Strecken zwischen den vier Punkten und dem Koordinatenursprung weggehen. Es ist auf die vier Punkte angewandt:
[mm] \alpha_P1 [/mm] = 180° - [mm] arcsin\left(\bruch{\bruch{h}{2}}{\wurzel{(\bruch{b}{2})^{2} + (\bruch{h}{2})^{2}}}\right) [/mm]
Du musst bei der Implementierung in eine Programmiersprache darauf achten, dass die immer mit Bogenmass rechnen. Es wäre also dann:
[mm] \alpha_1 [/mm] = 180° - [mm] arcsin\left(\bruch{\bruch{h}{2}}{\wurzel{(\bruch{b}{2})^{2} + (\bruch{h}{2})^{2}}}\right)*\bruch{180°}{\pi}
[/mm]
weiter ist
[mm] \alpha_2 [/mm] = [mm] arcsin\left(\bruch{\bruch{h}{2}}{\wurzel{(\bruch{b}{2})^{2} + (\bruch{h}{2})^{2}}}\right)*\bruch{180°}{\pi}
[/mm]
[mm] \alpha_3 [/mm] = 180° + [mm] arcsin\left(\bruch{\bruch{h}{2}}{\wurzel{(\bruch{b}{2})^{2} + (\bruch{h}{2})^{2}}}\right)*\bruch{180°}{\pi}
[/mm]
und
[mm] \alpha_4 [/mm] = 360° - [mm] arcsin\left(\bruch{\bruch{h}{2}}{\wurzel{(\bruch{b}{2})^{2} + (\bruch{h}{2})^{2}}}\right)*\bruch{180°}{\pi}
[/mm]
Nun müssen wir drehen. Mit Hilfe des sinus erhalten wir die y-Lage eines gedrehten Punkte, mit Hilfe des cosinus die x-Lage. Wir müssen zunächst alle [mm] \alpha [/mm] 's um den gewünschten Winkel erhöhen. Es ist also
[mm] \alpha_{i} [/mm] = [mm] \alpha_{i} [/mm] + W.
Nun zeichnen wir die Punkte praktisch wieder neu hin. Es ist dann
[mm] P_{{1}_{neu}}\left(cos(\alpha_{1} + W) * \overline{P_{1}P_{D}}, sin(\alpha_{1} + W) * \overline{P_{1}P_{D}}\right)
[/mm]
Ausgeschrieben ist das:
[mm] P_{{1}_{neu}}\left(cos(180° - arcsin\left(\bruch{\bruch{h}{2}}{\wurzel{(\bruch{b}{2})^{2} + (\bruch{h}{2})^{2}}}\right)*\bruch{180°}{\pi} + W) * \wurzel{(\bruch{b}{2})^{2} + (\bruch{h}{2})^{2}}, sin(180° - arcsin\left(\bruch{\bruch{h}{2}}{\wurzel{(\bruch{b}{2})^{2} + (\bruch{h}{2})^{2}}}\right)*\bruch{180°}{\pi} + W) * \wurzel{(\bruch{b}{2})^{2} + (\bruch{h}{2})^{2}}\right)
[/mm]
Kommen wir zur eigentlichen Frage. Aus [mm] p_{3} [/mm] wird nach Drehung ja
[mm] P_{{3}_{neu}}\left(cos(\alpha_{3} + W) * \overline{P_{1}P_{D}}, sin(\alpha_{3} + W) * \overline{P_{1}P_{D}}\right)
[/mm]
Ausgeschrieben
[mm] P_{{3}_{neu}}\left(cos(180° + arcsin\left(\bruch{\bruch{h}{2}}{\wurzel{(\bruch{b}{2})^{2} + (\bruch{h}{2})^{2}}}\right)*\bruch{180°}{\pi} + W) * \wurzel{(\bruch{b}{2})^{2} + (\bruch{h}{2})^{2}}, sin(180° + arcsin\left(\bruch{\bruch{h}{2}}{\wurzel{(\bruch{b}{2})^{2} + (\bruch{h}{2})^{2}}}\right)*\bruch{180°}{\pi} + W) * \wurzel{(\bruch{b}{2})^{2} + (\bruch{h}{2})^{2}}\right)
[/mm]
Nun müssen diese Koordinaten nur mit dem Punkt von [mm] P_{4} [/mm] von Rechteck 1 verglichen werden:
[mm] P_{4}\left(xpos + b, ypos + h\right)
[/mm]
Die Differenz de x-Werte [mm] P_{4} [/mm] - [mm] P_{3} [/mm] muss auf den x-Wert aller Punkte vom gedrehten Rechteck2 draufaddiert werden, Die Differenz de y-Werte [mm] P_{4} [/mm] - [mm] P_{3} [/mm] muss auf den y-Wert aller Punkte des gedrehten Rechteck2 draufaddiert werden. Dann müsste es funktionieren...
Dateianhänge: Anhang Nr. 1 (Typ: jpg) [nicht öffentlich]
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 15:46 Sa 05.04.2008 | Autor: | fuempf |
erstmal vielen dank!
ich habe nun:
w:=512 ;breite
h:=256 ;höhe
d:=0 ;rotationswinkel
pi:=3.141592653589793
x:= Cos(180 + Asin(h/2 / Sqrt((w/2)**2 + (h/2)**2)) * 180/pi + d) * Sqrt((w/2)**2 + (h/2)**2)
y:= Sin(180 + Asin(h/2 / Sqrt((w/2)**2 + (h/2)**2)) * 180/pi + d) * Sqrt((w/2)**2 + (h/2)**2)
ich denke mal wenn ich einen winkel von 0 angebe sollte bei einer position von 0/0 als ergebnis x=0 und y=h herauskommen? bekomme leider 203.46 / -201.30 .. suche die ganze zeit nach einem fehler werde aber nicht fündig. die klammersetzung ist die gleiche wie in der formel und rückgabewerte der funktionen sehen auch richtig aus.
Asin(...) = 0.463648
Sqrt(...) = 286.216701
erwarte ich mit x=0 und y=h bei d=0 falsche ergebnisse?
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 16:32 Sa 05.04.2008 | Autor: | abakus |
> erstmal vielen dank!
>
> ich habe nun:
>
> w:=512 ;breite
> h:=256 ;höhe
> d:=0 ;rotationswinkel
> pi:=3.141592653589793
>
> x:= Cos(180 + Asin(h/2 / Sqrt((w/2)**2 + (h/2)**2)) *
> 180/pi + d) * Sqrt((w/2)**2 + (h/2)**2)
> y:= Sin(180 + Asin(h/2 / Sqrt((w/2)**2 + (h/2)**2)) *
> 180/pi + d) * Sqrt((w/2)**2 + (h/2)**2)
>
>
> ich denke mal wenn ich einen winkel von 0 angebe sollte bei
> einer position von 0/0 als ergebnis x=0 und y=h
> herauskommen? bekomme leider 203.46 / -201.30 .. suche die
> ganze zeit nach einem fehler werde aber nicht fündig. die
> klammersetzung ist die gleiche wie in der formel und
> rückgabewerte der funktionen sehen auch richtig aus.
>
> Asin(...) = 0.463648
> Sqrt(...) = 286.216701
>
> erwarte ich mit x=0 und y=h bei d=0 falsche ergebnisse?
Hallo,
ich vermute, dass dein Programm nicht im Gradmaß, sondern im Bogenmaß rechnet.
Teste mal, was es dir für "Asin(1)" ausgibt. Wenn es im Gradmaß rechnet, ist das Ergebnis 90°. Im Bogenmaß müsste [mm] \pi/2, [/mm] also ca. 1,57 rauskommen.
Was sagt dein Rechner?
Viele Grüße
Abakus
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:40 Sa 05.04.2008 | Autor: | fuempf |
ist bogenmaß, 1.570796
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:02 Sa 05.04.2008 | Autor: | abakus |
> ist bogenmaß, 1.570796
Dann musst du in sämtlichen Formeln bisherige Winkelangaben im Gradmaß ins Bogenmaß umwandeln.
Statt 180 also [mm] \pi [/mm] verwenden, und für einen beliebigen Winkel "+d Grad" müsstest du stattdessen die Angabe [mm] +\bruch{d*\pi}{180} [/mm] verwenden.
An einigen Stellen deiner Formel ist das bereits beachtet, an anderen noch nicht.
|
|
|
|