Von der Steigung zum Viereck

Status
Nicht offen für weitere Antworten.

NatroN

Aktives Mitglied
Hi Leute!

Ich habe folgendes Problem.
Ich möchte ein Viereck auf einer Bahn laufen lassen. Sollte kein Problem sein. Das Problem ist aber, dass es auch die richtige Ausrichtung haben MUSS! (das "Auto" fährt eine Kurve).

Bahn ist fertig und die Steigung wird bereits berechnet.
MEin Problem ist nun, dass ich das Viereck richtig hineinlegen soll.

Das Programm sieht im moment so aus, dass statt dem Viereck ein Punkt gezeichnet wird.
DAS PROGRAMM

der Quellcode ist frei zugänglich unter
JStrassen.java und Verkehr.java. Aber alles was mit dem zeichnen zu tun hat, passiert in der JStrassen.java

Wäre echt toll wenn ihr mir helfen könntet.

Mfg
NatroN
 

NatroN

Aktives Mitglied
hallo!

hab mir jetzt danke einiger tipps ausn IRC channel die Steigung in Grad umgerechnet und wollte mit screen2d.rotate(steigung) einfach das viereck drehen.

Allerdings will das anscheinend nicht so recht.
Es dreht sich inerhalb von ca. 10 grad um die 0 Achse ... gar nicht so wies eigentlich sein soll...

hmm..
 

Marce

Mitglied
du weißt, dass man die Grad in Java im Bogenmaß angeben muss?

zu dem mit der Achse: du kannst das Bild einfach in den Punkt schieben, der sich dreht und nacher wieder zurück.

wenn dein rechteck die Maße 30x30 pixel hätte:
/e
Code:
x = (winkel/180) * Math.PI;
g2d.translate(15, 15);
g2d.rotate(x);
g2d.translate( -15, -15);
 

NatroN

Aktives Mitglied
ich hatte es so

screen2d.rotate(steigunginGrad);
screen.fillRect(40,40,20,60);
screen2d.rotate(-steigunginGrad);

aber wenn der rotate den winkel wirklich in Radiand braucht werd ich das mal testen
 

NatroN

Aktives Mitglied
VIELEN DANK

http://www.grojer.at/natron/Schule/Java/Test.html

...und er sah dass es gut war...

eine frage hab ich noch:

Wie am besten die Straße zeichnen, welche genau die Kurve hat , welche das auto fährt? Einfach etwas breiter als das Auto selber...

MFG


achja.. Die kurve und die geraden sind in Form von Gleichungen in meinem applet:

Siehe hier

Code:
	//Berechnen der Werte für den Punkt
		xWert = schrittweite;
			if(schrittweite<515) //Bevor die Kurve gefahren wird
				{yWert = -0.53018867924528301886792452830189*xWert + 505;
	 			 screen.fillOval((int)xWert-2, (int)yWert-2,4,4);
	 			 steigung=(-0.53018867924528301886792452830189);
				 screen2d.rotate(steigung,(int)xWert,(int)yWert);
				 screen.fillRect((int)xWert,(int)yWert,60,20);
				 screen2d.rotate(-steigung,(int)xWert,(int)yWert);
	 			 screen.drawString("Steigung: "+steigung+ "Steigung in Grad: " +steigunginGrad,120,30);
				}
			else
				{	if (schrittweite>700) //nachdem die Kurve gefahren wurde
				 		{yWert= 180;
				 	   screen.fillOval((int)xWert-2, (int)yWert-2,4,4);
				 		 steigung=0;
						 screen2d.rotate(steigung,(int)xWert,(int)yWert);
						 screen.fillRect((int)xWert,(int)yWert,60,20);
						 screen2d.rotate(-steigung,(int)xWert,(int)yWert);
	 			 		 screen.drawString("Steigung: "+steigung+ "Steigung in Grad: " +steigunginGrad,120,30);
				  	}
	   		 	else //die Kurve
						{yWert=0.001463*(xWert*xWert)-2.034*xWert+887.199;
						 screen.fillOval((int)xWert-2, (int)yWert-2,4,4);
						 steigung=2*0.001464*(xWert)-2.034;
						 screen2d.rotate(steigung,(int)xWert,(int)yWert);
						 screen.fillRect((int)xWert,(int)yWert,60,20);
						 screen2d.rotate(-steigung,(int)xWert,(int)yWert);
	 			 		 screen.drawString("Steigung: "+steigung+ "Steigung in Grad: " +steigunginGrad,120,30);
						}
			 }
 

Marce

Mitglied
ich würde kurze linien zeichenen - ka 5 pixel, oder 10 pixel lang
iss halt bissel aufwendig, aber ich wüsste nicht, wie man eine x-beliebige form einfach zeichen könnte
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben