PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gleichung eingeben und aurechnen



axeljaeger
07-02-2003, 18:00
Ich hab mir hier ein Programm geschrieben, mit dem ich den Graphen einer Gleichung auf die Obefläche einer Kugel zeichnen kann <-- Stark, gel? Im Moment muß ich aber die Gleichung noch in den Quelltext einbauen und jedesmal neu kompilieren. Ich würde jetzt gerne die Gleichung als const char * wo reingeben und mir dann einen beliebigen Funktionswert rausgeben lassen.

ReSeT
07-02-2003, 18:46
Ich hab mir hier ein Programm geschrieben, mit dem ich den Graphen einer Gleichung auf die Obefläche einer Kugel zeichnen kann <-- Stark, gel?
Jo, zeig ma :)

Warum liest Du die Gleichung nicht von der Eingabe und lässt dann einen Parser drüberlaufen? Oder habe ich jetzt die Frage falsch verstanden?

axeljaeger
07-02-2003, 20:57
>Jo, zeig ma

Wenn es fertig ist, kriegst du es. Es ist bisher nicht viel Code: Im Prinzip der NeHe SDL-Basecode mit einer eigenen renderGL()-Methode. Wenn ich eine Gleichung eingebbar machen will, muß ich es wohl mit Qt machen.

>Warum liest Du die Gleichung nicht von der Eingabe und lässt dann einen Parser >drüberlaufen? Oder habe ich jetzt die Frage falsch verstanden?

Die Frage hast du richtig verstanden, nur woher nehme ich so einen Parser? Ich müsste wohl irgendeine Skriptsprache einbetten, oder geht es einfacher? Ich hab mal irgendwo eine Funktion gesehen, der hat man einen mathemtischen Ausdruck als const char reingegeben und der hat den dann ausgerechnet. Das müsste man dann soweit modifizieren, das man da noch eine Laufvariable X miteinbaut.

Edit: Sowas vielleicht? http://www.ijon.de/comp/libs/#fpar

axeljaeger
07-02-2003, 21:20
Hier isses erstmal, auch wenns noch nicht fertig ist

arthur
08-02-2003, 00:38
Du brauchst keine Scriptsprache einzubinden:
schau Dir mal im Google flex und bison an,
das müsste reichen (natürlich nur wenn du mit c(++) programierst.

axeljaeger
08-02-2003, 11:54
Ja, ich verwende C. Bison werd ich mir mal anschauen

axeljaeger
08-02-2003, 13:40
Für meine ersten Gehversuche werde ich wohl eher nicht Bison nehmen, dieses fpar gefällt
mir da besser. Bison scheint mir mit Kanonen auf Spatzen geschossen. Aber es sind weitere
Probleme aufgetaucht: Wenn ich jetzt einen vernünftigen Funktionsplotter bauen will,
sollte ich wissen, wo in der Gleichung Nullstellen sind. Da ich jetzt in der 11. Klasse bin,
kommen da schonmal gebrochen-rationale Funktionen vor. Da wäre es ja nett, wenn
Definitionslücken auch als solche angezeigt werden und ich nicht einfach einen Strich
durchmale. Überhaupt gefällt mir mein Verfahren immer weniger, einfach eine Schleife
einen LINE_STRIP malen zu lassen. Löse ich genau auf, wird mein Programm langsam, löse
ich grob auf, kann es sein, das man nicht mehr viel vom Graphen sieht. Der Zeichenalgorythmus
sollte also inteligent genug sein, um interessante Stellen mit ansprechender Genauigkeit
zu zeichnen, allerdings Stellen, an denen nichts passiert, grob aufgelöst zu zeichnen,
da eine feinere Auflösung keinen Gewinn an Genauigkeit bringen würde. Wie schon wäre es
wenn es eine Klasse gäbe:

class Funktion
{
public:
Funktion(const char * func);
Vector<double> nullstellen();
Vector<Gerade> asymptoten();
Vector<double> definitionslücken();
double funktionswert(double x);
double yAchsenabschnitt();
}