Ich bin am experimentieren mit dem Zeichnen von Graphen. Einfaches Beispiel für solch einen Graph ist die Anzahl der Rechner im Netzwerk und deren offen Ports. Das ganze ist in Python geschrieben und sollte eigentlich ein schnelles experiment sein. Das Zeichnen des Graphen selbst ist erst einmal kein Problem. Nun möchte ich auf eine Node klicken und es soll mir die Ports anzeigen. Mein Versuch eines Mausüber ist aber kläglich gescheitert.
Mein Problem ist teilweise, das alles in anderen Koordinatensystemen ist.
Das Fenster und die Maus selbst sind in Pixel.
Die Auslegung des Graphen ist in [-1, 1].
Und in OGL habe ich ein texturiertes Viereck, welches vor der Kamera zentriert ist.
Die Textur ist skaliert um eine feinere Darstellung, des Graphen, zu ermöglichen.
Meine Frage wäre dann also folgende:
Wie rechnet man Pixelkoordinaten um, so das diese relative zum zentrierten Mesh sind?
So das ich weiß wo in der Textur die Maus proiziert werden soll.
Mausüber texturiertem Mesh.
Forumsregeln
Wenn das Problem mit einer Programmiersprache direkt zusammenhängt, bitte HIER posten.
Wenn das Problem mit einer Programmiersprache direkt zusammenhängt, bitte HIER posten.
Re: Mausüber texturiertem Mesh.
pixelPosition[x;y] / fenster[breite;höhe] * 2 - 1
damit müsste man pixelposition in dein [-1, 1] koordinatensystem umwandeln können.
pixelposition /fenstergröße macht den Wertebereich zu [0 bis 1], mal 2 machts zu [0 bis 2] und -1 macht es zu [-1 bis 1].
ich hoffe das hilft dir.
damit müsste man pixelposition in dein [-1, 1] koordinatensystem umwandeln können.
pixelposition /fenstergröße macht den Wertebereich zu [0 bis 1], mal 2 machts zu [0 bis 2] und -1 macht es zu [-1 bis 1].
ich hoffe das hilft dir.
Re: Mausüber texturiertem Mesh.
Ich würde für den Anfang das recht kleinteilig machen: Du malst dir auf, welche verschiedenen Koordinatensysteme es gibt und wie du von dem einen in das andere kommst. Ansich reicht es dafür, wenn du weißt, wie man ein 1D Intervall umrechnet (e.g. eine Zahl zwischen [20, 80] auf [530, 720] umrechnen, oder so). Das musst du dann einfach entsprechend mehrmals hintereinander und für beide Koordinaten machen.
Hilfreich ist es, sich das wirklich auf einem Blatt Papier aufzumalen und ein paar mal von Hand durchzurechnen und alle zwischenergebnisse aufzumalen.
Ist dann am Ende eh schnell genug, aber könnte man irgendwann später auch noch effizienter machen. Kleinteilig ist aber echt gut um erstmal das Prinzip wirklich verstanden zu haben.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
https://jonathank.de/games/