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. 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 |
Antwort von ANONYM | 12.04.2010 - 00:17 |
Ich bitte Sie, ich meine diese Frage voll fett ernst alta. |
Antwort von John_Connor | 12.04.2010 - 00:19 |
Zitat: 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? |
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 |
134 ähnliche Fragen im Forum:
> Du befindest dich hier: Support-Forum - Informatik- Powerpointpresentation: Flugpreise darstellen ? (5 Antworten)
- informationsmanagment (2 Antworten)
- Excel: Trainingstagebuch erstellen (0 Antworten)
- AD-Umsetzer (7 Antworten)
- OBDD (4 Antworten)
- Haskell: Implementierung α- und β-Konversion Lam.. (0 Antworten)
- mehr ...
Ä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 ..
- informationsmanagmentHallo, Ich versuche gerade das Y-CIM modell zu verstehen doch verstehe nur Bahnhof. Kann mir jmd das Y-CIM Modell mit ..
- Excel: Trainingstagebuch erstellenHallo, ich bin zur Zeit fleißig am trainieren und möchte nun auch meine Fortschritte (oder auch nicht) festhalten. Deshalb ..
- AD-UmsetzerHallo, ich habe da mal eine Frage die mir so bisschen Kopfweh bereitet. Sie lautet: Für einen AD-Umsetzer wird vom ..
- OBDDHi 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:
- Audio - Informationsverarbeitung durch Akustische SignaleDiese Präsentation erklärt die Grundlagen der Informationsverarbeitung durch Akustische Signale. Dabei werden unter anderem ..
- Zeiger (Funktion void Tausch), C++Schreiben Sie eine Funktion void Tausch (int *p, int *q), die folgendes leistet: Wenn fde main Funktion die Deklaration und ..
- mehr ...