Ich verstehe noch nicht so ganz warum...
Warum verändert das center setzen überhaut die position?
ich setze das center der Rotation auf das Center des Rechtecks, also warum verschiebt sich da was?
Wie heißt dieses Relative umschreiben in der Mathematik?
Ich wüsste jetzt nicht wie das geht und muss das erst googlen, aber ich weiß nicht nach was?
Kivy Rotation resize ändert position
Das habe ich gemacht.
ich habe eine 10x10 Pixel großes Rechteck erstellt und das auf pos gesetzt.
pos ist immer die linke untere ecke des nicht ursprünglichen, nicht rotierten Rechtecks.
ps:
was bedeutet dieser Orangene punkt der plötzlich auf dem Symbol neben der Fragenamen aufgetaucht ist?
ich habe eine 10x10 Pixel großes Rechteck erstellt und das auf pos gesetzt.
pos ist immer die linke untere ecke des nicht ursprünglichen, nicht rotierten Rechtecks.
ps:
was bedeutet dieser Orangene punkt der plötzlich auf dem Symbol neben der Fragenamen aufgetaucht ist?
dann bleibt es da: https://youtu.be/A4sFf0GZPpo
Also ich muss irgendwie herausfinden wie ich die Position verschieben muss, um die Änderung rückgängig zu machen.
aber wie?
Warum verschiebt sich das überhaupt so komisch?
wenn ich in echt, aus Pappe, Holz oder aus was auch immer ein Rechteck habe, welches man durch rauziehen vergrößern kann und ich das auf dem Tisch rotiere und es dann aufziehe und somit vergrößere, verschiebt sich das ja auch nicht ... also wo ist der sinn, dass kivy das verschiebt?
aber wie?
Warum verschiebt sich das überhaupt so komisch?
wenn ich in echt, aus Pappe, Holz oder aus was auch immer ein Rechteck habe, welches man durch rauziehen vergrößern kann und ich das auf dem Tisch rotiere und es dann aufziehe und somit vergrößere, verschiebt sich das ja auch nicht ... also wo ist der sinn, dass kivy das verschiebt?
Dann mach Dir halt Gedanken. Ich habe alles geschrieben, was es zu dem Problem zu schreiben gibt.Ich selbst nutze kein Kivy, es wäre also ein großer Aufwand für mich, das erst zum Laufen zu bekommen, nur um Dein Problem zu lösen.
Ich mache mir ja Gedanken und du weißt ja auch nicht was für andere Dinge ich schon gemacht habe und wie ich diese gelöst habe.
Deshalb kannst du nicht einfach behaupten, dass ich mir keine Gedanken machen würde.
mein Problem ist nicht ein wirkliches Kivy Problem, es geht nur darum, dass ich nicht verstehe wie warum sich dieses Rechteck verschiebt, weil das wie oben erwähnt in meinen Augen ein sehr komisches und unnatürliches Verhalten ist...
Du hast geschrieben Sinus/Cosinus und Relative Position zu zwei Rechtecken, damit kann ich aber leider nichts anfangen.
Ich weiß was Sinus und Cosinus ist und wie ich es verwende aber zu dieser relativen Position habe ich tbh noch nie etwas gehört...
Wenn du mir nicht helfen möchtest, finde ich das Vollkommen okay .
Du musst deine Zeit nicht verschwenden...
Deshalb kannst du nicht einfach behaupten, dass ich mir keine Gedanken machen würde.
mein Problem ist nicht ein wirkliches Kivy Problem, es geht nur darum, dass ich nicht verstehe wie warum sich dieses Rechteck verschiebt, weil das wie oben erwähnt in meinen Augen ein sehr komisches und unnatürliches Verhalten ist...
Du hast geschrieben Sinus/Cosinus und Relative Position zu zwei Rechtecken, damit kann ich aber leider nichts anfangen.
Ich weiß was Sinus und Cosinus ist und wie ich es verwende aber zu dieser relativen Position habe ich tbh noch nie etwas gehört...
Wenn du mir nicht helfen möchtest, finde ich das Vollkommen okay .
Du musst deine Zeit nicht verschwenden...
Hallo,
hast du den Code denn selbst geschrieben? Dabei macht man sich ja die verschiedensten Gedanken und probiert einzelne Teilfunktionen aus, bis das Ergebnis stimmt. Dann würde es mich wundern, dass du keinen Ansatz findest, der dein Problem löst, bzw. den Ansatz von Sirius3 gar nicht integrieren kannst.
Wenn der Code nicht von dir ist, dann musst du in den sauren Apfel beißen und jede Zeile durchgehen bis du ihre Bedeutung im Zusammenhang mit dem restlichen Code verstanden hast.
Zum Thema Position: Man unterscheidet grundsätzlich zwischen absoluter und relativer Position. Nehmen wir ein 2-D- Koordinatensystem der Nullpunkt wird Festgelegt auf NP(0/0). Wir betrachten zwei Punkte A und B. Punkt A hat die absoluten Koordinaten A(2/2). D.h. es wird vom Nullpunkt ausgegangen. Punk B hat die absoluten Koordinaten B(3/3). Aber betrachtet man die Position von B relativ zu A dann wird B mit B(1/1) angegeben. Da der Referenzpunk nicht mehr der Nullpunkt ist, sondern A.
Wenn B an diesem Punkt bleiben soll, A sich aber verändert, dann muss die relative Position von B um die Position um die sich A verändert hat, angepasst werden.
Erkennst du in deinem Code, wo die Eckpunkte und das Zentrum positioniert werden?
Grüße
Dennis
hast du den Code denn selbst geschrieben? Dabei macht man sich ja die verschiedensten Gedanken und probiert einzelne Teilfunktionen aus, bis das Ergebnis stimmt. Dann würde es mich wundern, dass du keinen Ansatz findest, der dein Problem löst, bzw. den Ansatz von Sirius3 gar nicht integrieren kannst.
Wenn der Code nicht von dir ist, dann musst du in den sauren Apfel beißen und jede Zeile durchgehen bis du ihre Bedeutung im Zusammenhang mit dem restlichen Code verstanden hast.
Zum Thema Position: Man unterscheidet grundsätzlich zwischen absoluter und relativer Position. Nehmen wir ein 2-D- Koordinatensystem der Nullpunkt wird Festgelegt auf NP(0/0). Wir betrachten zwei Punkte A und B. Punkt A hat die absoluten Koordinaten A(2/2). D.h. es wird vom Nullpunkt ausgegangen. Punk B hat die absoluten Koordinaten B(3/3). Aber betrachtet man die Position von B relativ zu A dann wird B mit B(1/1) angegeben. Da der Referenzpunk nicht mehr der Nullpunkt ist, sondern A.
Wenn B an diesem Punkt bleiben soll, A sich aber verändert, dann muss die relative Position von B um die Position um die sich A verändert hat, angepasst werden.
Erkennst du in deinem Code, wo die Eckpunkte und das Zentrum positioniert werden?
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Also den Code habe ich schon selber geschrieben, ich habe nichts irgendwie kopiert oder so...
Ich habe jetzt auch noch ein bisschen rumprobiert, aber finde irgendwie keine Möglichkeit, die Position herauszufinden auf die ich das Rechteck setzen muss, bevor ich das Center neu setze...
Ich habe folgende Idee, weiß aber nicht genau wie ich sie umsetzen kann:
- ich finde die Position des rotierten Rechtecks (da weiß ich nicht wie ich das anstellen soll, weil das ja rotiert ist)
- ich berechne die Differenz zwischen Rechteck und rotiertem Rechteck
- Position des Rechtecks -= zuvor berechnete Differenz
das habe ich mir so heute Ausgedacht, ob das wirklich funktioniert weiß ich nicht, aber ausprobieren kann man es ja mal
allerdings weiß ich wie gesagt nicht, wie ich Schritt 1 umsetzen kann ^
Ich habe jetzt auch noch ein bisschen rumprobiert, aber finde irgendwie keine Möglichkeit, die Position herauszufinden auf die ich das Rechteck setzen muss, bevor ich das Center neu setze...
Ich habe folgende Idee, weiß aber nicht genau wie ich sie umsetzen kann:
- ich finde die Position des rotierten Rechtecks (da weiß ich nicht wie ich das anstellen soll, weil das ja rotiert ist)
- ich berechne die Differenz zwischen Rechteck und rotiertem Rechteck
- Position des Rechtecks -= zuvor berechnete Differenz
das habe ich mir so heute Ausgedacht, ob das wirklich funktioniert weiß ich nicht, aber ausprobieren kann man es ja mal
allerdings weiß ich wie gesagt nicht, wie ich Schritt 1 umsetzen kann ^
Dein Code:
Dann siehst du ja schon, das sich bei jedem 'w' die 'pos'-Werte und 'center'-Werte ändern. Dadurch wird das Rechteck nicht an seinem Platz bleiben, wenn du die Größe änderst. Wenn du es rotierst, rotiert es ja um das Zentrum, so wie du es wolltest. Schau dir die Differenzen der Werte an und dann kannst du diese Konstant halten. Beispiel für 'center':
Wie die Differenz von 'pos' Zustande kommt, findest du bestimmt raus. Da ich den Code nicht geschrieben habe, will ich mich da jetzt nicht so tief einarbeiten, bis ich alles verstanden habe. Dafür brauche ich als nicht Programmierer zu lange.
Grüße
Dennis
Code: Alles auswählen
if "w" in self.keys_pressed:
height = min(height + step_size, 300)
print(self.center)
print(self.pos)
Code: Alles auswählen
if "w" in self.keys_pressed:
height = min(height + step_size, 300)
self.center[0] -= step_size
self.center[1] -= step_size
Wie die Differenz von 'pos' Zustande kommt, findest du bestimmt raus. Da ich den Code nicht geschrieben habe, will ich mich da jetzt nicht so tief einarbeiten, bis ich alles verstanden habe. Dafür brauche ich als nicht Programmierer zu lange.
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Also,
ich habe jetzt Rahmen um die Rechtecke gemacht und mir das nochmal angeschaut.
ich verstehe jetzt woher dieses verwalten kommt...
Das nicht rotierte, unsichtbare, Rechteck ändert die Größe auch, dadurch verändert sich, verschiebt sich das Rechteck, weil sich beim verändert der Größe das Center z.B. nach oben schiebt, anstelle von schräg nach links...
Ich habe auch noch Verschiedenes ausprobiert, mir kommt aber keine Idee für eine funktionierende Formel, mit der ich die neue Position ausrechnen kann...
ich habe jetzt Rahmen um die Rechtecke gemacht und mir das nochmal angeschaut.
ich verstehe jetzt woher dieses verwalten kommt...
Das nicht rotierte, unsichtbare, Rechteck ändert die Größe auch, dadurch verändert sich, verschiebt sich das Rechteck, weil sich beim verändert der Größe das Center z.B. nach oben schiebt, anstelle von schräg nach links...
Ich habe auch noch Verschiedenes ausprobiert, mir kommt aber keine Idee für eine funktionierende Formel, mit der ich die neue Position ausrechnen kann...
Hallo MupfSpace,
Du musst dir im klaren sein, was Du willst.
Du hast ein Rechteck mit den Positionskoordinaten. Aus diesen Elementen ergeben sich die Seiten a, b, c, d, die Diagonalen d1 und d2, den Winkel vom Nullpunkt zum Zentrum, einen Winkel, der angibt um welchen Betrag das Rechteck gekippt ist und die Zentrumskoordinaten.
Nun gibt es diese Möglichkeiten, das Rechteck zu manipulieren.
- Nach allen Seiten strecken (das Zentrum bleibt an Ort)
- Zwei gegenüberliegende Seiten strecken, die andern Seiten bleiben gleich lang (das Zentrum bleibt an Ort)
- Zwei gegenüberliegende Seiten strecken, eine Seite bleibt gleich und an Ort (Das Zentrum wandert)
- Nach allen Seiten strecken, eine Ecke bleibt an Ort (das Zentrum wandert)
- Manipuliertes Rechteck über eine Ecke kippen (das Zentrum wandert)
- Manipuliertes Rechteck im Zentrum drehen (das Zentrum bleibt an Ort)
Jetzt kannst Du Funktionen für diese Möglichkeiten schreiben und je nach Situation aufrufen.
Ich würde die Berechnungen mit komplexen Zahlen durchführen, nicht mit kivy.
Gruss Peter
Du musst dir im klaren sein, was Du willst.
Du hast ein Rechteck mit den Positionskoordinaten. Aus diesen Elementen ergeben sich die Seiten a, b, c, d, die Diagonalen d1 und d2, den Winkel vom Nullpunkt zum Zentrum, einen Winkel, der angibt um welchen Betrag das Rechteck gekippt ist und die Zentrumskoordinaten.
Nun gibt es diese Möglichkeiten, das Rechteck zu manipulieren.
- Nach allen Seiten strecken (das Zentrum bleibt an Ort)
- Zwei gegenüberliegende Seiten strecken, die andern Seiten bleiben gleich lang (das Zentrum bleibt an Ort)
- Zwei gegenüberliegende Seiten strecken, eine Seite bleibt gleich und an Ort (Das Zentrum wandert)
- Nach allen Seiten strecken, eine Ecke bleibt an Ort (das Zentrum wandert)
- Manipuliertes Rechteck über eine Ecke kippen (das Zentrum wandert)
- Manipuliertes Rechteck im Zentrum drehen (das Zentrum bleibt an Ort)
Jetzt kannst Du Funktionen für diese Möglichkeiten schreiben und je nach Situation aufrufen.
Ich würde die Berechnungen mit komplexen Zahlen durchführen, nicht mit kivy.
Gruss Peter