[DX9] Vertex am Mauszeiger ausrichten???



  • Hi,
    hab nun ein neues Prob. ich habs nun geschafft, den Winkel FAST zu berechnen... bin bislang soweit gekommen:
    http://www.fabianw.com/wirrwar2850/pics/use_wherelse/prob_dx.gif
    Jetzt weiß ich aber nich, wie ich die beiden Winkel 'ß' und 'a' ausrechnen soll 🙄 ...

    Bin dankbar für schnelle Antworten oder Formeln...

    @TGGC: Hört sich logisch an, aber wie und vor allem, klappt das auch, wenn sich die Maus um die Figur herum bewegt?

    thx WirrWar2850.



  • Klappt so lange der Vektor nicht 0 ist.

    Bye, TGGC (Keine Macht den Dummen)



  • OK, ich hab nun auch gemerkt, dass ich vollkommen falsch an die Sache heran gegangen bin...
    Hab heut morgen mal mit meiner Mathe Lehrerin geredet und bin währeddessen darauf gekommen, dass es vollkommen irsinnig ist, den Winkel zu berechnen, um den Ich die Figur drehen muss.
    Eigentlich ist die Lösung simpel, wenn man was davon versteht (betrifft mich also nich 🙄 ).
    Aber ich weiß jetzt, dass ich das Quad einfach jedes mal neu ausrichten sollte, anstatt den Winkel zwischen der alten und der neuen Pos. der Vertices zu berechnen.

    Also hast du recht, TGGC, aber ich hab wirklich keine Ahnung, wie ich das bewerkstelligen soll (9 Klasse 🙄 )...

    Die Lehrerin hat gesagt, dass ich einfach die Vektoren der ganzen Punkte berechnen muss (Vertices des Quads, Mittelpunkt des Quads und Mausposition).
    Da ich die aber praktischerweise in C++ als Vektoren vorliegen hab, kann man diesen Schritt getrost überspringen.

    Dann folgt allerdings ne Berechnung, aufgrund welcher ich durch die Vertices des Quads und des Cursors irgend nen anderen Vektor berechnen soll, welcher bei erfolg 0 ist, hat irgend was mit dem 90° Winkel der Geraden (zwischen den beiden Vektoren des Quads, die der Maus am nächsten sind) zur Maus zu tun 😕 😮 ...

    OK, jetzt gibts nur das Problem, dass ich davon keine Ahnung hab 😞 ...
    @TGGC: Wenn du mir dabei noch einen kleinen Wenig weiterhilfst, dann wär ich dir sehr dankbar 🙂 ...

    thx WirrWar2850.



  • Mathebuch: Punktprodukt, Normale



  • ... ich hab neben mir ein ca. 1000 Seiten dicken Wälzer über Mathe, hab mal im Index nachgeschaut und Normale gefunden, Punktprodukt allerdings nicht, dafür Punktrichtungsgleichung und Vektorprodukt, ich werd mir die mal anschaun, falls es nich klappt, komm ich wieder ⚠ 😉 ...

    thx WirrWar2850.



  • WirrWar2850 schrieb:

    ...
    Aber ich weiß jetzt, dass ich das Quad einfach jedes mal neu ausrichten sollte, anstatt den Winkel zwischen der alten und der neuen Pos. der Vertices zu berechnen. ...

    Mein ich doch ... jedesmal den Winkel neu berechnen ... vieleicht nicht optimal aber es funzt.

    Aber egal, mich würde auch mal interessieren was TGGC und Sgt.Nukem genau meinen.
    Vieleicht könnt ihr ja mal kurz ein paar Sätze zu den Stichpunkten sagen ? 🙂



  • *HEUL!* Ich packs doch nich!!!
    Ich habs jetzt zwar geschafft, dass sich die Figur 'halbwegs' mit der Maus dreht, aber ganz funktionieren tuts immer noch nich, weil die Maus komischerweise immer in einem größeren oder kleineren Winkel als die Figur steht *seufz*...

    Hat da nich jemand ne Funktion dafür??? muss ja nich arg sauber sein... ich bin froh, wenn überhaupt mal was tut...

    Das was ich gemacht hab, war immer den Winkel der Maus vom Mittelpunkt ausgehend zu berechnen und dann eben die Vertices der Figur entsprechend dem Winkel der Maus zu drehen (davor wurden die Vertices auf ihre Ursprungsposition zurückgesetzt), aber es will einfach nich klappen!!!!!

    Bin für jedes verständliche Tutorial oder jede Formel die in die Richtung zeigt dankbar...

    thx WirrWa2850.



  • Den genannten Vektor normalisieren. Dann einen senkrechten (bzw. bei 3D zwei mit Hilfe der "UP"-Dir) Vektoren bestimmen und diese als Basis für das neue Koordinatensystem nehmen.

    Bye, TGGC (Keine Macht den Dummen)



  • Puh das ist mir zu hoch 🙂
    Hier das ischt meine lösung für sowas ...

    float Game::GetWinkel(float x, float y)
    {
    	int mousex,mousey;
    	float winkel=0;
    	float tang;
    
    	SDL_GetMouseState(&mousex, &mousey);
    	if(mousex>x)
    	{
    		if(mousey<y)
    		{
    			tang=(mousex-x)/(y-mousey);
    		}
    		else
    		{
    			tang=(mousey-y)/(mousex-x);
    			winkel=90;
    		}
    	}
    	else
    	{
    		if(mousey>y)
    		{
    			tang=(x-mousex)/(mousey-y);
    			winkel=180;
    		}
    		else
    		{
    			tang=(y-mousey)/(x-mousex);
    			winkel=270;
    		}
    	}
    	winkel=360-(winkel+(atan(tang)*180/PI));
    	return winkel;
    }
    


  • 💡 😃 Ich habs endlich geschafft... war eigentlich gar nich so schwer 🙄 .

    Hab einfach mit dem Vektor der Maus und dem des Mittelpunktes, meines Quads den Winkel ausgerechnet und dann die Vertices dementsprechend gedreht...

    (Der Fehler war die ganze Zeit, dass meine Cursor Textur nicht richtig war, der Zeiger in der Textur war oben links, deswegen hat die Figur auch immer daran vorbei gezeigt, weil sie ja auf die Mitte zielt 😕 ...)

    Aber trotzdem fettes Lob an euch, weil ohne hätt ichs wahrscheinlich nicht verstanden (wie es überhaupt geht...) Das mit dem Mauszeiger... naja, PP.

    thx WirrWar2850.


Anmelden zum Antworten