P
Pille
Gast
Hi!
Ich erstelle mit frame ein Fenster, zum Zeichnen ein canvas. Auf dem canvans wird dann mit OpenGL gezeichnet, was jedoch erstmal irrelevant ist (denke ich). Nun fliegen in meinem Fenster ein paar Objekte durch die Gegend, damit die nun nicht aber aus dem Bild fliegen, sollen die immer an den Rändern anhalten/abprallen/what ever. Die Sache ist nur die, alle Objekte prallen immer zu früh oder zu spät ab. Es handelt sich dabei meist um wenige Pixel, daher dachte ich mir, dass in der Fenstergröße, welche ich am Anfang angeben auch die Rahmen des Fensters mit eingerechnet wird. Liege ich damit richig?
Wenn ja - gibt es irgendeinen Weg um die tatsächliche Größe des Fensters herauszubekommen? (Vllt. die Fensterrahmengröße konstant?) oder so?
Achso und ich denke nicht, dass meine Kollisionsberechnung falsch ist. Ich nutze einen Kreis und da sieht der code so aus:
Rundungsfehler oder so sollten eigentlich auch nicht auftreten, da ich mit double rechne...
Danke
Ich erstelle mit frame ein Fenster, zum Zeichnen ein canvas. Auf dem canvans wird dann mit OpenGL gezeichnet, was jedoch erstmal irrelevant ist (denke ich). Nun fliegen in meinem Fenster ein paar Objekte durch die Gegend, damit die nun nicht aber aus dem Bild fliegen, sollen die immer an den Rändern anhalten/abprallen/what ever. Die Sache ist nur die, alle Objekte prallen immer zu früh oder zu spät ab. Es handelt sich dabei meist um wenige Pixel, daher dachte ich mir, dass in der Fenstergröße, welche ich am Anfang angeben auch die Rahmen des Fensters mit eingerechnet wird. Liege ich damit richig?
Wenn ja - gibt es irgendeinen Weg um die tatsächliche Größe des Fensters herauszubekommen? (Vllt. die Fensterrahmengröße konstant?) oder so?
Achso und ich denke nicht, dass meine Kollisionsberechnung falsch ist. Ich nutze einen Kreis und da sieht der code so aus:
Code:
if (getXPos() + getRadius() >= maxXWindow - windowCorrection
|| getXPos() - getRadius() <= -maxXWindow - windowCorrection) return X_COLLISION;
else if (getYPos() + getRadius() >= maxYWindow + windowCorrection
|| getYPos() - getRadius() <= -maxYWindow + windowCorrection) return Y_COLLISION;
else return NO_COLLISION; //windowCorrection ist ein Testwert, mit dem ok aussieht, aber eigentlich will ich das nicht unbedingt so..; Rest sollte selbserklärend sein
Danke