Menu schließen

Funktionsgraphen mit GrafServer darstellen. Aber wie ?

Frage: Funktionsgraphen mit GrafServer darstellen. Aber wie ?
(8 Antworten)

 
Darstellung von Funktionen mit dem GrafServer

In dieser Aufgabe sollen beliebige Ausschnitte eines Funktionsgraphen mit Hilfe des
GrafServers dargestellt werden.
Dabei wird die Funktionskurve durch einen Polygonzug
oder durch gerade Linien approximiert (s. Abb. am Ende).
Wählen Sie eine beliebige mathematische Funktion f(x) einer reellen Variablen, die Sie als
C++-Funktion programmieren:
· double f (double x)
Die Funktion sollte nicht zu einfach sein und einen interessanten Graphen besitzen (also
z. B. nicht f(x) = x).
Schreiben Sie eine Funktion plotFunction (), welche einen bestimmten Ausschnitt der
Funktion f(x) zeichnet:
· void plotFunction (double xa, double xb, double step,
double ya, double yb,
int xag, int xbg, int yag, int ybg)
Die Parameter der Funktion haben folgende Bedeutung: xa und xb geben das Intervall an,
in dem die Funktion f(x) gezeichnet werden soll. Die Funktion f(x) soll mit einer Schrittweite
step ausgewertet werden. ya und yb geben den Bereich in y-Richtung an, in dem die
Funktionswerte erwartet werden. Der durch xa, xb, ya und yb gegebene rechteckige
Bereich wird im Grafik-Display auf ein Rechteck mit den Koordinaten xag und xbg (linker
und rechter Rand) sowie yag und ybg (unterer und oberer Rand) abgebildet. Der Rand
dieses Rechtecks soll ebenfalls gezeichnet werden. Außerdem sollen die Werte xa, xb, ya
und yb in das Funktionsdiagramm eingezeichnet werden.
Hinweise zur Funktion plotFunction():
1. Zur Umrechnung von Funktionskoordinaten (x, y, reell) in Grafik-Koordinaten (xg, yg,
ganzzahlig) kann man wie folgt vorgehen: Berechnen Sie zunächst die
Skalierungsfaktoren
double sx = (xbg - xag) / (xb - xa);
double sy = (ybg - yag) / (yb - ya);
Mit diesen Werten können xg und yg aus x und y berechnet werden:
xg = (int) (sx * (x - xa) + xag);
yg = (int) (sy * (y - ya) + yag);
2. Zum Zeichnen des Polygonzugs mit Hilfe der GrafServer-Funktion
drawPolyline() müssen die x- und die y-Koordinaten jeweils in ein ein int-Array
geschrieben werden. Da die Anzahl der Punkte vom Funktionsparameter step
abhängt, sollten die Arrays dynamisch angelegt werden.
3. Um die Koordinatenwerte xa, xb, ya und yb in das Diagramm zu zeichnen, müssen
die Zahlenwerte zunächst in Zeichenketten umgewandelt werden. Dies geschieht am
besten mit folgendem Aufruf der Funktion sprintf():
sprintf (text, "%.1f", x);
Dabei ist text das char-Array, in das die Zahl ausgegeben werde soll, "%.1f" ist
ein sogenannter Format-String, der in diesem Fall angibt, dass der nächste
Parameter (also x) mit einer Nachkommastelle ausgegeben werden soll.Lesen Sie im Hauptprogramm in einer Schleife (j/n-Abfrage am Ende zur Wiederholung)
die zur Darstellung der Funktion notwendigen Parameter xa, xb, step, ya und yb ein. Die
Werte von xag, xbg, yag und ybg können entweder ebenfalls eingelesen oder fest ins
Programm eingebaut werden.
Erweiterungen für Interessierte (nicht bewertet):
· Falls die Funktionskoordinaten x=0 oder y=0 im ausgegebenen Rechteck liegen,
können auch die entsprechenden Nulllinien (= Koordinatenachsen) eingezeichnet
werden.
· Um die Funktion plotFunction() flexibler zu machen, sollte sie nicht von einer
speziellen Funktion f() abhängen. Es wäre schön, wenn man die Funktion f() als
Parameter an die Funktion plotFunction() übergeben könnte. Dies geht in der Tat.
Man kann dazu einen Pointer auf eine Funktion verwenden. Der Datentyp eines
solchen Pointers hängt von den Funktionsparametern und dem Rückgabetyp ab. Einen
Pointer auf eine Funktion mit einem double-Parameter und Rückgabetyp double
definiert man wie folgt:
double (*func)(double);
func ist hier der Name des Pointers. In diesem kann man direkt die Adresse einer
Funktion abspeichern (kein Adressoperator notwendig):
func = f;
Dabei ist f eine Funktion vom Typ double f (double x). Man kann nun die
Funktion f mit Hilfe des Pointers func aufrufen (kein Inhaltsoperator notwendig):
y = func (x);
Man kann der Funktion plotFunction() als zusätzlichen Parameter einen solchen
Funktionspointer geben und hat dadurch die Möglichkeit, eine beliebige Funktion zu zeichen
ANONYM stellte diese Frage am 11.04.2010 - 23:28

 
Antwort von ANONYM | 11.04.2010 - 23:30
Ole
wir fahren in den Puff nach Barcelona, OLE OLE

 
Antwort von ANONYM | 12.04.2010 - 00:17
Ich bitte Sie, ich meine diese Frage voll fett ernst alta.


Autor
Beiträge 7242
45
Antwort von John_Connor | 12.04.2010 - 00:19
Zitat:
Ich bitte Sie, ich meine diese Frage voll fett ernst alta.


Geilstes zitat für heute =)

 
Antwort von ANONYM | 12.04.2010 - 00:20

http://www.youtube.com/watch?v=2VSHMZ2Ixa8

 
Antwort von GAST | 12.04.2010 - 00:20
Dein Name ist Meier großes M kleine Eier.

 
Antwort von ANONYM | 12.04.2010 - 00:22
ich bedanke mich John_Connor

 
Antwort von ANONYM | 12.04.2010 - 00:24
Anonym wer bist du?


Autor
Beiträge 40227
2100
Antwort von matata | 12.04.2010 - 00:28
Eigentlich ist es das falsche Forum für solche Spässchen.... entweder etwas Nützliches antworten - oder Klappe halten...
________________________
 e-Hausaufgaben.de - Team

Verstoß melden
Hast Du eine eigene Frage an unsere Informatik-Experten?

> Du befindest dich hier: Support-Forum - Informatik
ÄHNLICHE FRAGEN:
  • Powerpointpresentation: Flugpreise darstellen ?
    Heii Leute, Ich mach gerade eine Powerpointpresentation .. und in der schule musste sich jeder ein land aussuchen und ich hab ..
  • informationsmanagment
    Hallo, Ich versuche gerade das Y-CIM modell zu verstehen doch verstehe nur Bahnhof. Kann mir jmd das Y-CIM Modell mit ..
  • Excel: Trainingstagebuch erstellen
    Hallo, ich bin zur Zeit fleißig am trainieren und möchte nun auch meine Fortschritte (oder auch nicht) festhalten. Deshalb ..
  • AD-Umsetzer
    Hallo, ich habe da mal eine Frage die mir so bisschen Kopfweh bereitet. Sie lautet: Für einen AD-Umsetzer wird vom ..
  • OBDD
    Hi leute ich hab ne frage zu ner Aufgabe Entwickeln sie von dem unten stehenden OBDD die zugehörige Funktion . Vereinfachen ..
  • Haskell: Implementierung α- und β-Konversion Lam..
    Gegeben sei ein algebraischer Datentyp LExpr zur Darstellung von Ausdrücken des λ-Kalküls ohne Konstanten. data LExpr..
  • mehr ...
BELIEBTE DOWNLOADS: