# Kurven in Java



## -=codA=- (28. Dez 2005)

Hallo, 

muss bis Übermorgen ein Programm abgeben und ich habe keine Ahnung, wie ich das anstellen soll. Bin für jede Hilfe dankbar. Hat vielleicht jemand den Quellcode für mich?

Muss Kurven in Java darstellen. Und zwar Zu Beginn eine Abfrage, welche Kurve ich darstellen möchste (Bsp.:Sin(x))

Dannach muss man angeben, welche Werte berechnet werden sollen (10, 15, 20 oder 36)

dargestellt soll dies werden in einemKoordinatensystem (nur x und y Achse)

Punkte, die nicht auf der Kurve luegen sollen mit einem "." gargestellt werden und Werte, die auf der Kurve liegen mit einer "#". 

Vielleicht kann mir ja jemand helfen. 

Danke schonmal.


----------



## SlaterB (28. Dez 2005)

> welche Kurve

stehen da bestimmte zur Auswahl (Eingabe 1, 2 oder 3) oder soll der Benutzer beliebiges eintippen und das Programm daraus eine Funktion bilden?
willst du von der Konsole einlesen oder in einer graphischen Oberfläche?

wie auch immer, das ist ja eine Standardaufgabe, irgendwas vom Benutzer einlesen,
willst du das noch selber machen (Fragen dazu?) oder wartest du jetzt einfach bis dir das jemand fertig vorsetzt? 

> welche Werte

macht im Zusammenhang z.B. mit einer Sinusfunktion wenig Sinn,
Wert 10 -> sin(10)? das wäre ja nur eine einzelne Zahl

meinst du eher dass der Wertebereich schon festgelegt ist (z.B. 0 bis 1) 
und man nur noch die Anzahl der Zwischenwerte eingeben darf?

> Koordinatensystem

das klingt nach einer Ausgabe auf die Konsole in der Form
........##.......
.....#......#....
..#..........#...
....................

meinst du das so oder etwas anderes?
nochmal: willst du ein graphisches Programm oder nur Konsolenein- und ausgabe

Programmablauf ungefähr:

- Benutzereingaben einlesen,
- die benötigten Werte berechnen 
- daraus die Punkte im Koordinatensystem berechen und zeichnen,

das letzte hängt stark davon ab wie du zeichen willst und ist am ehesten für eine Frage hier im Forum geeignet,
mal aber doch erstmal eine leeres Koordinatensystem (z.B. 36x36 Punkte) mit x und y-Achse,
danach kann man genauer schauen wie die richtigen Punkte gesetzt werden

das sind alles sehr simple Prozesse in Java, 
bis auf das fertige Schreiben für dich, was wohl kaum einer machen wird (und sollte), gibts wenig was man dazu an Tipps geben könnte, 
du musst also schon genauer sagen wo du Probleme hast, z. B. mit deinem bisherigen Code falls vorhanden


----------



## Roar (28. Dez 2005)

graphen auf der konsole ausgeben !? :autsch: :? :bahnhof:


----------



## -=codA=- (29. Dez 2005)

Danke schonmal für nen ungefähren Programmablauf...hat mir schon viel geholfen. Hab's soweit auch fertig. Man soll am Anfang zwischen 3 Funktionen wählen können...eine davon ist f(x)=sin(x)

Dannach sollte man wählen, wieviel X-Werte man berechnen soll...also 10-36 Stk. 

Funzt auch einwandfrei, allerdings, ist das Frame ziemlich groß...also, deine Abbildung stimmt mit der überein, wie die Ausgabe erfolgen soll. Allerdings muss man das Frame erst größer ziehen, damit der Abstand der Punkte Horizontal und Vertikal schön anzuschauen ist. 

Kann ich das irgendwie ändern, damit die Funktionen gleich angepasst werden an die Fenstergröße und ich die nicht erst manuell ändern muss?

Also im Moment muss ich noch scollen, um die Kurve zu sehen...hoffe, du weißt, was ich meine.


----------



## SlaterB (29. Dez 2005)

hmm, ein Frame?
und benutzt du darin eine Textausgabe oder malst du mit paint die Punkte beliebig,
dann frage ich mich wie du das Zeichen # darstellst 

ist also immer recht schwer vorzustellen was du da meinst,
36x36 Punkte würde ich in einem Frame locker in einer kleinen Ecke des mindestens 800x600-Desktops unterbringen,

du musst scrollen? na das ist ja wohl gar nicht so einfach das überhaupt so einzurichten dass man scrollen KANN..,
benutzt du da ein ScrollPane über der Zeichenfläche oder wie?

naja, meine Fragen sind auch egal,
vielleicht fehlt dir einfach nur die entsprechnenden Operationen, u. a.:
int screenBreite = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth();
int screenHoehe = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight();

jFrame.setSize(breite,hoehe); !!

jpanel.setPreferredSize(breite,hoehe);

(benutze ich allerdings nur für JFrame, nicht für Frame)

------------

andersrum falls das Frame schon maximiert ist und der Graph der Funktion einfach zu groß:
ja dann kleiner machen..,
da musst du doch bei Textausgabe eine bestimmte Schriftgröße gewählt haben oder
beim selber malen einen festgelegten Abstand zwischen 2 Punkten 

die Schriftgröße/ der Abstand muss nun kleiner werden..

am besten relativ ausrechnen, ja,
wenn die Gesamtbreite 500 Pixel ist und und 10 oder 30 Punkte unterbringen willst
dann einfach dividieren und schon hast du einen relativen Abstand von 500/10 = 50 oder 500/30 = 13

da gehört natürlich viel probieren dazu,


----------

