Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Einen Punkt um einen anderen rotieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
21.08.2004, 04:19 Uhr
Lensflare



mein problem ist folgendes:

ich will in einem zweidimensionalen koordinatensystem (bildschirm mit pixeln)
einen punkt um einen anderen rotiren lassen, um somit geometrische objekte zu rotieren, die ja aus punkten bestehen.

nehmen wir mal an, ich will den Punkt um den ursprung (x = 0, y = 0) rotieren lassen.
dann ist die X- sowie Y-entfernung des punktes vom ursprung bekannt (bzw. festgelegt).

der punkt verändert jedoch seine koordinaten, wenn man den winkel ändert (ich habs mit grad gemacht statt bogenmass)

ich bin dann durch ein paar rechnungen auf die folgende formel für die neuen koordinaten gekommen:

X_neu = cosinus(inverse_tangens(Y_alt/X_alt)+winkel)*(Y_alt/sinus(i_tangens(Y_alt/X_alt)))
Y_neu = sinus(inverse_tangens(Y_alt/X_alt)+winkel)*(Y_alt/sinus(i_tangens(Y_alt/X_alt)))

X_alt und Y_alt sind die koordinaten des punktes, wenn er noch nicht gedreht wurde, also bei winkel = 0.

mit dieser formel dreht sich der punkt aber nicht richtig. das wird deutilch, wenn man mehrere punkte rotiert.

Kennt jemand eine formel, die geht? Oder nen vorschlag, wie ich mein vorhaben umsetzen kann?

Vielleicht hab ich auch irgend einen kleinen denkfehler in meiner formel, also wenn ihr eine beschreibung wollt wie ich auf diese formel gekommen bin, dann kann ich das gern erklären (jedoch nur bei aufforderung ;)
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)

Dieser Post wurde am 21.08.2004 um 04:26 Uhr von Lensflare editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.08.2004, 10:02 Uhr
mike
Pinguinhüpfer
(Operator)


Ähm. Kein sein, dass du ein Polares Koordinatensystem willst?
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.08.2004, 15:10 Uhr
Lensflare



Was ist ein Polares Koordinatensystem?
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.08.2004, 20:06 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


wenn du das über die steigung machen willlst müsstest du dafür sorgen das der abstand zu dem punkt um den du rotieren willst immer gleich bleibt.

ohne jetzt lange drüber nachzudenken ob die formel richtig ist dann so

r=wurzel(delta_y^2+delta_y^2);
X_neu = cos(arctan(steigung)+winkel)*r
Y_neu = sin(arctan(steigung)+winkel)*r


wobei delta_y und delta_x jeweils X_alt-x_rotierpunkt und y_alt-y_rotierpunkt wären...
wenn du den rotationspunkt (0/0) ist dann halt delta_x=x_alt und delta_y=y_alt

steigung ist dann delta_y/delta_x
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 21.08.2004 um 20:07 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.08.2004, 21:26 Uhr
Lensflare



ich habs eigentlich fast genau so gemacht,

nur dass ich statt der steigung den winkel ausgerechnet habe und r habe ich über sinusfunktion errechnet, da ich den winkel kenne.

es müsste einfach gehen, tut es aber nicht
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.08.2004, 22:12 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


hmm hast du bei den winkelfunktionen ins radiantensystem transformiert? auf grad reagieren die winkelfunktionen aus math.h allergisch
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
21.08.2004, 23:23 Uhr
Hans
Library Walker
(Operator)



Zitat von Lensflare:
Was ist ein Polares Koordinatensystem?

Hi,
beim polaren Koordinatensystem werden die Koordinaten eines punktes nicht durch x- und y-Werte angegeben, sondern durch den Abstand des Punktes vom Koordinatenursprung (auch als Radius bezeichnet) und einem Winkel.
Beispiel: Ein Punkt hat die (kartesischen) Koordinaten x=3 und y=4. In polare Koordinaten umrechnet ist der Radius 5 und der Winkel 53,13°. Die Rechnungen gehen so:

Radius r = sqrt(x*x + y*y)
winkel w = atan (y/x)

Polare Koordinaten kann man auch in kartesische umrechnen, und zwar so:

x = r * cos(w)
y = r * sin(w)

Bei den Winkelfunktionen der Programmiersprachen ist zu beachten, das sie immer im Bogenmass arbeiten, d.h. man muss den Winkel u.U. vom Gradmass ins Bogenmass umrechnen:
b = alpha*pi/180

Soviel zum Thema polare Koordinaten.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.08.2004, 00:52 Uhr
Lensflare



@Windalf:
ja, das hab ich gemacht... trotzdem danke für den hinweis.

@Hans:
danke für die beschreibung...
meine formel ist ja demnach irgendwie sowas wie ne umrechnung vom polaren ins "normale" system.
auch wenn es mich nicht weiterbringt, ist es trotzdem gut zu wissen, was ein polares koordinatensystem ist
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)

Dieser Post wurde am 22.08.2004 um 00:53 Uhr von Lensflare editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
22.08.2004, 19:33 Uhr
Hans
Library Walker
(Operator)


Hi Lensflare,

Deine Formeln sind, wie Du selber schon gemerkt hast, nicht wirklich richtig. Und damit Dich das Wissen um polare Koordinaten auch weiter bringt, hier der Trick:
Wenn Du einen Punkt um einen bestimmten Winkel drehen willst, berechnest Du zuerst seine Position in polaren Koordinaten. Dann genügt es, zum Winkel etwas dazu zu zählen, oder abzuziehen. Du brauchst also nur noch einen Wert zu ändern. Anschliessend rechnest Du wieder in kartesische Koordinaten (also x- und y-Wert) um, und Du hast die neue Position für den Punkt.

Diese Skizze sollte auch noch hilfreich sein, die ich gestern Abend "unterschlagen" habe:

Code:
| y
|
|
|
|-y-------------+ P
|                  *  |
|               *     |
|          r *        |
|         *           |
|      *              |
|   *                 |
|*   \  alpha       |
+------------------------------ x
|                     x                      



Besser ist es aber wahrscheinlich, wenn du dazu ein Mathebuch zu Rate ziehst, denn darin ist diese Skizze meisst besser dargestellt, als hier. Oder Du nimmst gleich in ein Buch über Computergrafik und liesst dort nach. Der Haken dabei ist der, dass sie teilweise sehr Mathelastig geschrieben sind, und eine Menge an Mathekenntnissen vorraus setzen. Es gibt aber auch welche, die die nötige Mathematik im laufenden Text mit erklären, und sich dabei auf jene Mathematik beschränken, die zur Lösung des Problems gerade nötig ist. Da muss man gucken, womit man besser zurecht kommt. Deshalb hab ich dazu jetzt auch keinen genauen Tipp im Angebot.

Hans

P.S. Die genaue Richtung der Mathematik, die für die Grafikdarstellung nötig ist, nennt sich übrigens Vektoralgebra.
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 22.08.2004 um 19:34 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
26.08.2004, 01:59 Uhr
Lensflare




das bringt mich noch mehr zum verzweifeln, denn ich habe exakt genau so gerechnet:
zuerst winkel und entfernung berechnen, dann mit winkel + rotationswinkel wieder die X Y koordinaten...

Jetzt weiss ich zumindest, dass ich richtig gedacht hab.
Könntest du bitte eine formel für die neuen koordinaten (nach der rotation) hinschreiben?
dann könnt ich deine mit meiner vergleichen.
meine steht ganz oben im ersten thread.

danke
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: