Benötige hilfe bei der Rotation



  • Hallo alle miteinander,
    ich bin dabei eine Graphic-Anwendung zuschreiben und häng zurzeit an einer 2D Rotation. Ich habe zwei Vectoren erstellt und die rotiert, dabei ist mir aufgefallen das die zwei Vectoren nicht um ihren mittelpunkt rotieren sondern um irgendeinen. Jetzt ist meine Frage wie bring ich die 2 Vectoren dazu um ihren mittelpunkt zu rotieren?

    (Könnte es Vieleicht daran liegen das Sinus und Cosinus falsch sind (in meiner erinnerung ist der sin(90)=1.0 math.h zeigt aber 0.44 an)? Wenn ja wie bekomm ich die richtigen werte von sin und cos?)

    Hier der Rotations Code:

    VEC2 Rotation2D (VEC2 v, float Degree) {
    	VEC2 nv;
    	nv.x = v.x*cos(Degree) - v.y*sin(Degree);
    	nv.y = v.y*cos(Degree) + v.x*sin(Degree);
    	return nv;	
    }
    

    Und hier die Main

    VEC2 v1 = {300,100};
    	VEC2 v2 = {300,300};
    	while ( true ) {
    		if (kbhit()){
    			char c = getch();
    			switch (c){
    				case 'a':
    					v1 = Rotation2D (v1, 0.1);
    					v2 = Rotation2D (v2, 0.1);
    					break;
    				case 'd':
    					v1 = Rotation2D (v1, -0.1);
    					v2 = Rotation2D (v2, -0.1);
    					break;
    			}
    		}
    		Render::Line(hdc, v1, v2, Black);
    


  • Was genau ist der "Mittelpunkt" eines Vektors?



  • i516alu schrieb:

    (Könnte es Vieleicht daran liegen das Sinus und Cosinus falsch sind (in meiner erinnerung ist der sin(90)=1.0 math.h zeigt aber 0.44 an)? Wenn ja wie bekomm ich die richtigen werte von sin und cos?)

    sin() und cos() rechnen im Bogenmaß.



  • dot schrieb:

    Was genau ist der "Mittelpunkt" eines Vektors?

    Sorry, bin nicht grad gut im erklären. Ich meine den Mittelpunkt der beiden Vectoren bzw. der Mittelpunkt der Geraden.

    Die Zwei Vectoren sind mit einer Linie Verbunden.

    VEC2 v1 = {300,100};
    	VEC2 v2 = {300,300};
    

    Der mittelpunkt der zwei Vetoren ist 300,100 und der mittelpunkt auf der map von den 2 Vectoren ist 300,200.

    v1
    |
    |
    m
    |
    |
    v2

    (v1 = Vector1, v2 = Vector2, m= Mittelpunkt)
    die 2 Vectoren sollten um m Rotieren

    Hoffe ich hab es Verständlich erklärt. 🙂



  • Ok, es geht also um den Mittelpunkt einer Linie. Vektoren haben keinen Mittelpunkt... 😉

    Deine Rotation rotiert um den Ursprung. Verschied deine Linie erst so, dass der Mittelpunk im Ursprung liegt, mach die Rotation und verschieb die rotierten Punkte wieder zurück.



  • dot schrieb:

    Ok, es geht also um den Mittelpunkt einer Linie. Vektoren haben keinen Mittelpunkt... 😉

    Wie gesagt bin schlecht im erklären.

    dot schrieb:

    Deine Rotation rotiert um den Ursprung. Verschied deine Linie erst so, dass der Mittelpunk im Ursprung liegt, mach die Rotation und verschieb die rotierten Punkte wieder zurück.

    Danke für deine hilfe jetzt funktioniert es. 🙂



  • Linien haben auch keinen Mittelpunkt 😉



  • Klugscheißer schrieb:

    Linien haben auch keinen Mittelpunkt 😉

    In der Tat, ich hätte natürlich besser von einer Gerade sprechen müssen, anstatt von einer allgemeinen Linie... 😛



  • Ich denke was Du wirklich sagen wolltest, war "Strecke" 🙂


Anmelden zum Antworten