Koordinaten bei drawArc und drawLine

Status
Nicht offen für weitere Antworten.
J

JavaGast

Gast
Welche Funktion erfüllen die Parameter, die ich z.B. bei
Code:
g.drawArc (0,0,400,400,0,360);
		g.drawLine(200,200,0,220);
habe?


Danke für eure Hilfe!
 
B

bygones

Gast
rtfAPI

http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Graphics.html#drawArc(int,%20int,%20int,%20int,%20int,%20int)
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Graphics.html#drawLine(int,%20int,%20int,%20int)

Das steht dort explizit da....
 
J

JavaGast

Gast
Danke!

Ich möchte ein Ziffernblatt erstellen doch weiß ich nicht genau wie ich z.B. die Markierung für die 5 Minutenschritte auf dem Kreis realisiere.

Code:
g.setColor(Color.blue);
		g.drawArc (0,0,400,400,0,360);
		g.drawLine(0,200,400,200);
		
		g.setColor(Color.red);
		g.drawLine (200,0,200,400);
		g.drawLine (200,200,300,150)


Wie kann ich jetzt nun die Markierungen anbriengen oder wie ausrechnen?[/quote]
 

Donut

Bekanntes Mitglied
kompliziert aber es geht:

Code:
int m_x = 500; //x- Koordinate des Mittelpunktes
int m_y = 500; //y- Koordinate des Mittelpuniktes

int r = 500; //Radius in px
int l = 50; //Länge der markierung in px
int markierung = 5; //anzahl minuten pro markierung

int grad = 360/(60/markierung);
float verschiebung_x = (cos (90-grad))*r;
float verschiebung_y = (sin (90-grad))*r;
float verschiebung_x2 = l/r*((cos (90-grad))*r);
float verschiebung_y2 = l/r*((sin (90-grad))*r);

for( int i = 0; i<= 360; i+= grad)
{
	g.drawLine(m_x+verschiebung_x, m_y-verschiebung_y, (int) ((m_x+verschiebung_x)-verschiebung_x2),  (int) ((m_y-verschiebung_y)+verschiebung_y2);
}
 
J

JavaGast

Gast
Danke für deinen Lösungsvorschlag!
Ich habe mal diesen Quelltext eingefügt, aber es werden Fehler angezeigt.

Code:
g.setColor(Color.blue);
		g.drawArc (0,0,1000,1000,0,360);
		/*g.drawLine(0,200,400,200);
		
		g.setColor(Color.red);
		g.drawLine (200,0,200,400);
		g.drawLine (200,200,330,50);*/
		
		int m_x = 500; //x- Koordinate des Mittelpunktes 
		int m_y = 500; //y- Koordinate des Mittelpuniktes 

		int r = 500; //Radius in px 
		int l = 50; //Länge der markierung in px 
		int markierung = 5; //anzahl minuten pro markierung 

		int grad = 360/(60/markierung); 
		float verschiebung_x = (float) ((Math.cos (90-grad))*r); 
		float verschiebung_y = (float) ((Math.sin (90-grad))*r); 
		float verschiebung_x2 = (float) (l/r*((Math.cos (90-grad))*r)); 
		float verschiebung_y2 = (float) (l/r*((Math.sin (90-grad))*r)); 

		for( int i = 0; i<= 360; i+= grad) 
		
		   g.drawLine((int) (m_x+verschiebung_x), (int) (m_y-verschiebung_y), (int) ((m_x+verschiebung_x)-verschiebung_x2),  (int) ((m_y-verschiebung_y)+verschiebung_y2));

Das Ziffernblatt wird aber nicht Angezeigt. Der Kreis wurde deinen Koordinaten angepasst.
 

Donut

Bekanntes Mitglied
Math.sin und Math.cos beinhalten den Radialen, aber nicht den Winkel-sinus bzw. cosinus
 
J

JavaGast

Gast
Deine Lösung funktioniert bei mit nicht, da sin und cos immer unterstrichen werden. Das Ziffernblatt wird auch nicht erstellt.
 

Donut

Bekanntes Mitglied
ja klar ich hatte sin und cos nur so hingeschrieben, sodass man weiß, was gemeint ist .....
funktionieren tut es so:
Code:
g.setColor(Color.blue);
g.drawArc (0,0,500,500,0,360);
      
int m_x = 250; //x- Koordinate des Mittelpunktes
int m_y = 250; //y- Koordinate des Mittelpuniktes

float r = 250; //Radius in px
float l = 50; //Länge der markierung in px
int markierung = 5; //anzahl minuten pro markierung

int grad = (int) 360/(60/markierung);
for( int i = 0; i< 360; i+= grad)
{
	double verschiebung_x = r*Math.cos(Math.toRadians(90)-Math.toRadians(i));
	double verschiebung_y = r*Math.sin(Math.toRadians(90)-Math.toRadians(i));
	double verschiebung_x2 = (l/r)*((Math.cos(Math.toRadians(90)-Math.toRadians(i)))*r);
	double verschiebung_y2 = (l/r)*((Math.sin(Math.toRadians(90)-Math.toRadians(i)))*r);
	g.drawLine((int) (m_x+verschiebung_x), (int) (m_y-verschiebung_y), (int) ((m_x+verschiebung_x)-verschiebung_x2),  (int) ((m_y-verschiebung_y)+verschiebung_y2));
}
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben