Koordinatensystem

girl2005

Erfahrenes Mitglied
Hallo,

ich habe Schwierigkeiten ein Koordinatensystem zu erstellen, das die folgenden Anforderungen erfüllt:

- Die X-Axe zeigt Werte zwischen -600 und 600.
- Der Bereich ]-5, 5[ in der x-Axe soll besonders deutlich zu sehen.
- Die Y-Axe zeigt Werte zwichen -7.7 und 4.3
- Der Bereich ]-3.2, 1.3[ in der Y-Axe soll auch deutlich zu sehen.


Über vorschläge, Ideen oder Lösungen würde ich mich sehr freuen.[
 
Sorry, aber dass sind ein bischen wenig Infos.
Soll es nur ein gedankliches oder ein gezeichnetes Koordinatensystem werden, z.b?
 
Gut, und wo hackt es jetzt genau?
Weißt du nicht wie man Zeichnet in Java? -> Java2D, Graphics
Oder hast du Probleme dir einen Algoritmus zu überlegen, der eins Zeichnet?
 
Danke für die schnelle Antwort:)

Das Koordinatensystem wird in einem Panel kommen, also das soll nicht zu größ sein. Weil es wird nur ein Teil der Gui sein, die ich ertsellen will. Ich kann Linien , kreise usw. mit java zeichnen.

DAS ERSTE PROBLEM
Die x-Achse soll Werte von -600 bis 600 enthalten, und der Bereich
]-5,5[ soll besonders sichtbar sein. schon ausreichend sichtbar damit ein kleiner Kreis darin zu sehen ist...Das ist nicht einfach..wie kann ich das machen? ich meine jetzt nicht den Kreis, sondern der größe unterschied zwischen 5 und 600 in einem kleinen Panel
 
Meinst du, dass nur dieser Bereich besonders sichtbar sein soll? Wenn ja, mach mal bitte ne Zeichnung, wie du dir das Vorstellst.

Oder meinst du die Schrittweite der X-Achse?
Du musst schon deutlich werden.
 
Hmm. Du könntest die breite des Panels auslesen und durch 1200 teilen, dann hättest du schonmal die Schrittweite eines Pixels. Wenn du dann den die X-Koordinate 5,5 z.B. einzeicnen lassen willst, dann kannst du sich ja ganz einfach anpeilen mit 5,5 * Schrittweite.
Ich hoffe du verstehst was ich meine.. und umgekert ^^
 
Danke für die Antwort,

könntest du mir ein Beispiel-Code geben. ich verstehe leider nicht was du meinst!
 
Achtung super simples AWT-Demo zum ausbauen.

ich habe eine Funktion f(x) = x * x. Ich zeichne im Bereich von x = -4 bis x = +4. mein Koordinatensystem geht entsprechend von x-4 bis x+4 und y-16 bis +16.

Da das Java Koordinatensystem auf dem Kopf steht ( 0 ist oben) muss ich eine kleine Subtraktioneinbauen.

Der Rest ist eigentlich nur ein Dreisatz.

Java:
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Screen extends Frame {

	private static final int SIZE = 300;
	
	private static final double xMin = -4.0;
	private static final double xMax = 4.0;
	private static final double yMin = -16;
	private static final double yMax = 16;
	
	public Screen() {

		this.setSize(SIZE,SIZE);
		addWindowListener(new WindowAdapter(){	public void windowClosing(WindowEvent e) {	dispose();}});
	}

	public void paint(Graphics g) {
		zeicheKoordinatenSystem(g);
		for(double x = xMin; x < xMax; x += 0.01 ){
			g.drawLine(berechneXPixel(x), berechneYPixel(f(x)), berechneXPixel(x),  berechneYPixel(f(x)));
		}
	}
	
	
	private void zeicheKoordinatenSystem(Graphics g) {
		zeichneXAchse(g);
		zeichneYAchse(g);
	}

	private void zeichneXAchse(Graphics g) {
		
		int startx = berechneXPixel(xMin);
		int endx = berechneXPixel(xMax);
		int starty = berechneYPixel(0);
		int endy = berechneYPixel(0);
		g.drawLine(startx, starty, endx, endy);
		
	}
	private void zeichneYAchse(Graphics g) {
		int startx = berechneXPixel(0);
		int endx = berechneXPixel(0);
		int starty = berechneYPixel(yMin);
		int endy = berechneYPixel(yMax);
		g.drawLine(startx, starty, endx, endy);
		
	}

	private int berechneXPixel(double x) {
		
		double pixelBreite = ((xMax - xMin) / (double)getWidth()); 
		return (int) ((x - xMin) / pixelBreite );
	}
	private int berechneYPixel(double y) {
		
		double pixelBreite = ((yMax - yMin) / (double)getHeight()); 
		return getHeight() - ((int) ((y - yMin) / pixelBreite));
	}
	
	private double f(double x) {
		return x * x;
	}
	public static void main(String[] args) {
		new Screen().setVisible(true);
	}
}
 

Neue Beiträge

Zurück