Fensterkoordianten + Reaktion auf Maus/Tastatur -> OpenGL
-
Hallo,
ich arbeite gerade an einem Screensaver. Dabei habe ich eine texturierte Kugel, die irgendwo auf dem Bildschirm (2D) langrollt. Wenn sie den Bildschrimrand berührt, soll sie die Richtung ändern. Nun die Frage: Wie kann man die Koordinaten des Bildschirmrandes abfragen?
Die zweite Frage ist die, wie man auf eine Mausbewegung oder Tastaturanschlag reagiert. Der Bildschirmschoner muss ja dann beendet werden. Ich weiß, wie man den Status einzelner Tasten abfragen kann, aber es gibt doch sicherlich eine andere Variante, als alle Tasten abzufragen di ich kenne, ob sie gedrückt sind und dann beende....
Würde mich freuen, wenn ihr mir weiterhelfen könntet...
-
Eine Kugel auf 2D??
Also im 3D müsstest Du diese gegen das Frustrum checken.
Aber ohne API wird der Rest schwer...
-
Ulf schrieb:
Hallo,
Dabei habe ich eine texturierte Kugel, die irgendwo auf dem Bildschirm (2D) langrollt.Das nennt sich Kreis.
-
stimmt nicht ganz, ich habe eine Kugel, die auch rotiert, nur die läuft über eine 2D Fläche, also nicht in einem 3D Raum...
-
Na, alles oberhalb einer zweidimensionalen Fläche wäre ja auch.... Mal überlegen, ne Hyperebene wärs ja nicht, die wär ja unendlich ausgedehnt... Komisch
-
Ein Bildschirmschoner beendet sich doch automatisch? Das der "Bildschirmrand" im 3D Raum nicht einfach eine Koordinate hat, sollte auch klar sein. Es ist eine Pyramide.
Bye, TGGC \-/
-
Kleine Korrektur: Ein Pyramidenstumpf - auch Frustum genannt.
cya
liquid
-
LiquidAcid schrieb:
Kleine Korrektur: Ein Pyramidenstumpf - auch Frustum genannt.
Falsch, near und farplane liegen nicht am Bildschirmrand.
Bye, TGGC \-/
-
TGGC schrieb:
LiquidAcid schrieb:
Kleine Korrektur: Ein Pyramidenstumpf - auch Frustum genannt.
Falsch, near und farplane liegen nicht am Bildschirmrand.
Eine Pyramide mit unendlicher Grundfläche also...
-
wäre schön, wenn ihr auf meine frage antworten könntet ^^
ich will einfach nur die x/y Koordinaten wissen. Ist doch völlig egal, ob 2D oder 3D oder 4D!Die Z-Koordinate ist konstant!
Nein, ein Bildschirmschoner beendet sich NICHT automatisch, er wird auch nicht automatisch in den Volbildmodus geschaltet!
-
Ähhm, hast du gelesen was ich schrieb? Es gibt da nicht einfach eine x/y Koordinate, wo der Rand ist. Du muss deine Kugel mit der erwähnten Pyramide schneiden (ja Nukem, die ist unendlich hoch).
Bye, TGGC \-/
-
gibt es denn da keine Funktion, die die Koordinaten zurückgibt?
-
Ulf schrieb:
gibt es denn da keine Funktion, die die Koordinaten zurückgibt?
TGGC würde jetzt sagen: Wenn Du sie schreibst, schon...
-
Wie sieht denn deine Projektionsmatrix aus? Wenn du das weisst und die z-Koordinate fest ist, dann kannst du das eigentlich ganz einfach mit Dreisatz oder den Strahlensätzen oder womit auch immer selbst ausrechnen.
-
so wie ich das verstanden hab, will er sein prog beenden, wenn die maus bewegt wird ( so wie halt jeder normale screensaver ).
versuch duch einfach mit GetCursorPos() dir die mauskoordinaten beim start zu merken und wenn sich diese ändern das prog zu beenden!?
-
Nö, ich würde eher sagen:
Wenn es keine spezielle Koordinate gibt, die den Rand beschreibt, gibt es auch keine Funktion, die diese Koordinate zurückgibt. Logisch, oder?Was man im Netz aber sicher findet: fertige Schnittfunktionen Pyramide<->Kugel
Wegen Beenden kann man ja einfach bei jeder WM_KEY... oder WM_MOUSE... machen.
Bye, TGGC \-/
-
TGGC schrieb:
Nö, ich würde eher sagen:
Wenn es keine spezielle Koordinate gibt, die den Rand beschreibt, gibt es auch keine Funktion, die diese Koordinate zurückgibt. Logisch, oder?Es gibt ja eben eine, aber nur bei gegebener Z-Koordinate...
Funktionale Abhängigkeit
-
In 3D beschreibt eine Koordinate eine Ebene parallel zu zwei Achsen. Der Rand liegt aber i.A. nicht auf einer solchen, und kann daher auch nicht so beschrieben werden.
Bye, TGGC \-/
-
Wenn ich die Z-Koordinate weiß, und diese sich für das Objekt nicht ändert (was hier der Fall ist), weiß ich auch, an welchen X/Y-Koordinaten das Objekt ans Frustrum stoßen würde...
-
Du kennst aber noch nichtmal die Z-Koordinate, da das Objekt ja ein ganzes Intervall auf der Z-achse belegt. Und auch die alle Punkte des Frustrumrandes mit einer bestimmten z-Koordinate auf die x/y Ebene projeziert ergeben i.A. kein achsenparalleles Rechteck.
Bye, TGGC \-/