Hallo,
an der Uni verwenden wir ein kleines Framework, dass ich jetzt etwas ausbauen will. Die folgende Methode zeichnet ein Fahrzeug.
Ich wollte ein Rechteck (Rectangle2D) darüberlegen um bei der Fahrt der Fahrzeuge dieses zur Kollisionsprüfung nutzten zu können. Blöderweise wird dieses Rechteck (Variable s im Quellcode) aber verschoben dargestellt und liegt nicht genau über dem
Fahrzeug während der Fahrt sondern dreht sich komisch mit.
Wo liegt hier der Fehler? Anbei auch ein Screenshot des Fahrzeugs mit dem gezeichneten schwarzen Rechteck drüber
an der Uni verwenden wir ein kleines Framework, dass ich jetzt etwas ausbauen will. Die folgende Methode zeichnet ein Fahrzeug.
Ich wollte ein Rechteck (Rectangle2D) darüberlegen um bei der Fahrt der Fahrzeuge dieses zur Kollisionsprüfung nutzten zu können. Blöderweise wird dieses Rechteck (Variable s im Quellcode) aber verschoben dargestellt und liegt nicht genau über dem
Fahrzeug während der Fahrt sondern dreht sich komisch mit.
Wo liegt hier der Fehler? Anbei auch ein Screenshot des Fahrzeugs mit dem gezeichneten schwarzen Rechteck drüber
Java:
public void paint (Graphics2D graphics2D) {
scaleX=getMassstab();
graphics2D.scale(scaleX, scaleX);
graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
graphics2D.setPaint( LkwColor );
graphics2D.setStroke( new BasicStroke( 0.1f , BasicStroke.CAP_BUTT , BasicStroke.JOIN_BEVEL ) );
graphics2D.rotate(winkel*Math.PI/180, x, y) ;
Rectangle2D.Double LkwRect = new Rectangle2D.Double (x-0.5*laenge, y-0.5*breite ,laenge, breite ) ;
Rectangle2D.Double lkwRectInside = new Rectangle2D.Double (x-0.45*laenge, y-0.42*breite ,0.9*laenge, 0.9*breite ) ;
graphics2D.fill(LkwRect);
graphics2D.setPaint(new Color(255,0,0,255));
Rectangle2D.Double LkwRect1 = new Rectangle2D.Double (x+0.5*laenge, y-0.35*breite ,laenge*0.15, breite*0.7 ) ;
Rectangle2D.Double lkwrad1 = new Rectangle2D.Double (x-0.35*laenge, y-0.55*breite ,laenge*0.2, breite*0.1 ) ;
Rectangle2D.Double lkwrad2 = new Rectangle2D.Double (x-0.35*laenge, y+0.5*breite ,laenge*0.2, breite*0.1 ) ;
Rectangle2D.Double lkwrad3 = new Rectangle2D.Double (x+0.52*laenge, y-0.47*breite ,laenge*0.1, breite*0.1 ) ;
Rectangle2D.Double lkwrad4= new Rectangle2D.Double (x+0.52*laenge, y+0.37*breite ,laenge*0.1, breite*0.1 ) ;
graphics2D.fill(LkwRect1);
graphics2D.setPaint(new Color(0,0,0,255));
AffineTransform t = AffineTransform.getRotateInstance(winkel*Math.PI/180,x,y);
Shape s = t.createTransformedShape(new Rectangle2D.Double (x-0.5*laenge, y-0.5*breite ,laenge*1.15, breite*1.01 ));
//Shape s = t.createTransformedShape(new Rectangle2D.Double (x-0.5*laenge, y-0.5*breite ,laenge*1.15, breite*1.01 ));
collisionRectangle = s.getBounds2D();
graphics2D.draw(LkwRect);
graphics2D.draw(lkwRectInside);
graphics2D.fill(lkwrad1);
graphics2D.fill(lkwrad2);
graphics2D.fill(lkwrad3);
graphics2D.fill(lkwrad4);
graphics2D.fill(s);
graphics2D.draw(LkwRect1);
if (lkwfahrt==true) {
}
graphics2D.rotate(-winkel*Math.PI/180, x, y);
graphics2D.scale(1/scaleX, 1/scaleX);
}