AWT Rectangle mit Angle

Diskutiere Rectangle mit Angle im AWT, Swing, JavaFX & SWT Bereich.
R

realodds

Hallo,
für eine hitbox in einem Spiel müsste ich vorzugsweise ein Rechteck erstellen, dass in einem bestimmten Winkel liegt. Ich hatte eine Art geschafft (mit AffineTransform):
Java:
    public static Shape rotateShape(Shape s, double degrease) {
        AffineTransform tx = new AffineTransform();
        tx.rotate(Math.toRadians(degrease));
        return tx.createTransformedShape(s);
    }
Jedoch brauche ich ein Rechteck und casten wirft eine Exception. Gibt es eine bessere Möglichkeit und wie sehe diese aus?
 
T

TM69

ist s evtl. Null? Und was übergibst du als <code>degrease</code>? Und was sagt die Exception genau?

P.S.
Hat jemand aus dem Forum evtl. meine Glaskugel gesehen????? Hab sie irgendwie verlegt :D :D :D
 
J

JustNobody

P.S.
Hat jemand aus dem Forum evtl. meine Glaskugel gesehen????? Hab sie irgendwie verlegt :D :D :D
Du willst unbedingt Ärger mit dem Zaubereiministerium? Du weisst doch genau, dass die Nutzung der Glaskugel auch als Zauberei gilt und das gegenüber von Muggeln ... Also seih froh, dass Du die nicht zur Hand hattest ....
 
R

realodds

Java:
            Rectangle rect = (Rectangle) Sword.rotateShape(new Rectangle(500, 500, 50, 80), 45);
            Shape s = Sword.rotateShape(new Rectangle(500, 500, 50, 80), 45);
s ist nicht null und bei rect wirft es folgende Exception:
Exception in thread "main" java.lang.ClassCastException: java.awt.geom.Path2D$Double cannot be cast to java.awt.Rectangle
at gui.Frame.draw(Frame.java:1178)
at gui.Frame.repaintScreen(Frame.java:344)
at gui.Frame.<init>(Frame.java:153)
at gui.Frame.main(Frame.java:339)
 
mrBrown

mrBrown

ist s evtl. Null? Und was übergibst du als <code>degrease</code>? Und was sagt die Exception genau?

P.S.
Hat jemand aus dem Forum evtl. meine Glaskugel gesehen????? Hab sie irgendwie verlegt :D :D :D
Er spricht davon, dass die Exception beim Casten fliegt, da gibt es nicht sooo viele Möglichkeiten...
Jedoch brauche ich ein Rechteck und casten wirft eine Exception. Gibt es eine bessere Möglichkeit und wie sehe diese aus?
getBounds liefert dir ein Rechteck.
 
T

TM69

Er spricht davon, dass die Exception beim Casten fliegt, da gibt es nicht sooo viele Möglichkeiten...
Ich weis deshalb suche ich ja gerade verzweifelt meine Glaskugel. Ich habe sie aber bis jetzt noch nicht gefunden :(

Du willst unbedingt Ärger mit dem Zaubereiministerium? Du weisst doch genau, dass die Nutzung der Glaskugel auch als Zauberei gilt und das gegenüber von Muggeln ... Also seih froh, dass Du die nicht zur Hand hattest ....
Ich bekomme mit dem Zauberministerium ärger, wenn ich sie nicht vorweisen kann. :confused:


:D:D:D:D:D:D:D:D:D
 
mrBrown

mrBrown

Ich weis deshalb suche ich ja gerade verzweifelt meine Glaskugel. Ich habe sie aber bis jetzt noch nicht gefunden :(


Ich bekomme mit dem Zauberministerium ärger, wenn ich sie nicht vorweisen kann. :confused:


:D:D:D:D:D:D:D:D:D
Um zu wissen, dass im Code oben keine NPE fliegen kann, und beim Casten eine ClassCastException geworfen wird, reicht alternativ zur Glaskugel auch etwas Wissen über Java oder ein Blick ins Javadoc ;)
 
T

TM69

Java:
            Rectangle rect = (Rectangle) Sword.rotateShape(new Rectangle(500, 500, 50, 80), 45);
            Shape s = Sword.rotateShape(new Rectangle(500, 500, 50, 80), 45);
s ist nicht null und bei rect wirft es folgende Exception:
Exception in thread "main" java.lang.ClassCastException: java.awt.geom.Path2D$Double cannot be cast to java.awt.Rectangle
at gui.Frame.draw(Frame.java:1178)
at gui.Frame.repaintScreen(Frame.java:344)
at gui.Frame.<init>(Frame.java:153)
at gui.Frame.main(Frame.java:339)
Wenn ich es richtig sehe, korregiert mich wenn ich es jetzt falsch sehe, du übergibst einen int an ein Double. Müsste es nicht heissen 45f?
 
mrBrown

mrBrown

Wenn ich es richtig sehe, korregiert mich wenn ich es jetzt falsch sehe, du übergibst einen int an ein Double. Müsste es nicht heissen 45f?
Ja und Nein. Er gibt dort ein int-Literal an, das ist aber völlig egal.
45f wäre ein float-Literal, kein double ;)
 
R

realodds

Das ist auch nicht das Problem: Wenn ich das Shape zeichne, ist es mit 45° gedreht
 
mrBrown

mrBrown

Wie gesagt: Shape#getBounds liefert dir die BoundingBox, das ist das einzige Rechteck was du dazu bekommen kannst.

Wenn du das wirklich gedreht brauchst, musst du mit Shape arbeiten, ein Rectangle kann nie gedreht sein.
 
Thema: 

Rectangle mit Angle

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben