Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 18.11.2004, 19:59 Titel: Graphen zeichnen |
|
|
Hi!
Ich wollte ein Programm schreiben, dass einem den Graphen jeglicher mathematischer Funktionen zeichnen kann, doch es ist ziemlich lahm wenn man die x-Achse von Punkt A nach Punkt B abläuft. Anderseits gibt es auch Funktionen wie x^7 die dann keine durchgehenden Linien auf dem Bildschirm produzieren weil die Schrittweite auf der x-Achse zu groß ist.
Habt ihr irgendwelche Vorschläge wie man das lösen könnte?
Ich hab zwar eine Rekursivlösung aber die funktioniert nicht bei jeder Funktion...nur bei manchen und das ist immer noch ziemlich lahm...andere Programme zaubern das ja einem mit einem Wimpernschlag auf den Bildschirm.....ich bin langsam am Verzweifeln...  _________________ The source of all power is in its destiny... |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 18.11.2004, 20:47 Titel: |
|
|
Die Schritte verkleinern oder zwischen zwei Punkten interpolieren... letzteres sieht nicht schlechter aus(je nach dem, wie man interpoliert) und geht je nach darzustellender Funktion schneller von sich. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 18.11.2004, 22:52 Titel: |
|
|
wenn ich die Schrittweite verkleinere kann das bis zu einigen Minuten andauern bis der komplette Graph berechnet worden ist..
Wie interpolierst du? Berechnest du einfach den arithmetischen Mittelwert zweier Punkte? Bei dieser Methode gibt es bei einigen Funktionen dann Darstellungsfehler...oder ich hab noch einen Fehler in meinem Code. _________________ The source of all power is in its destiny... |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
|
Nach oben |
|
 |
Maxim Senior JLI'ler
Anmeldedatum: 28.03.2004 Beiträge: 249
Medaillen: Keine
|
Verfasst am: 19.11.2004, 16:54 Titel: |
|
|
Ehhh,ich wollte am diesen Wochenende auch so ein Programm anfangen zu schreiben.
Wir hatten gerade in Mathe Funktionen durgegangen und da ist mir die Idee eingefallen sowas zu progen.
Mit was programmierst du es ? MFC...? |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 19.11.2004, 20:00 Titel: |
|
|
Boah, ich mach auch so eins...
allerdings versuche ich einen Parser einzubauen, damit man die Funktion selber eingeben kann. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 20.11.2004, 09:55 Titel: |
|
|
Bei mir kann man die Funktionen auch selber eingeben, kann sogar Funktionsscharen zeichnen lassen und jeder Funktion einen Bereich zu weisen dass sie nur von Punkt A bis Punkt B gezeichnet wird. Ich programmiere ohne MFC....ich kann einfach den selbsterzeugten Code von MFC nicht ausstehen...also normales Visual C++ _________________ The source of all power is in its destiny... |
|
Nach oben |
|
 |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 21.11.2004, 11:30 Titel: |
|
|
das wäre super wenn du die Facharbeit besorgen könntest.  _________________ The source of all power is in its destiny... |
|
Nach oben |
|
 |
Legolas87 JLI'ler

Alter: 37 Anmeldedatum: 22.10.2003 Beiträge: 131
Medaillen: Keine
|
Verfasst am: 02.12.2004, 11:24 Titel: |
|
|
ich hab auch mal so was geschrieben. hab mit direct x ein koordinatensystem gezeichnet und dann den computer die funktionen berechnen lassen. diese hat er dann durch zugriff auf die einzelnen pixel ganz schnell gezeichnet. der graph ist fertig, bevor man das fenster sieht . für eingabe einer funktion hatte ich keine lust, also muss man noch die funktion im quelltext ändern. wenn dir das weiterhilft und kein müll für dich war, was ich grad beschrieben hab, kann ich dir ja mal den quelltext zeigen. |
|
Nach oben |
|
 |
HomeLess_PunkDrummer JLI Master Trainee

Alter: 36 Anmeldedatum: 28.11.2004 Beiträge: 583 Wohnort: Alter Joghurtbecher an der A4 Medaillen: Keine
|
Verfasst am: 02.12.2004, 16:11 Titel: |
|
|
Machs doch so, dass du die Schrittweite so einstellst, dass du nach relevanten Punkten gehst, also zb erst die Nullstellen oder so ausrechnest. Außerdem denke ich ist es besser, die Darstellung auf Schrittweise und Auflösung anzupassen, dann kannst dus mit ner for-schleife machen, und das kann ja dann nicht so lang dauern, wärn ja bei zb 1024*768 nur 1024 durchläufe _________________ "Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz." |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 02.12.2004, 16:27 Titel: |
|
|
also Linien zeichnet man ja effektiv pixelweise, indem man einfach anschaut, in welche richtung es weiter geht (also ob Steigung größer oder kleiner 1 ist),und dann zu jedem Punkt auf der Längeren den Punkt auf der Kürzeren ausrechnet.
Bei Kurven allerdings würde es ja eine Umkehrung geben, da die Steigung sich verändert. Diese Punkt könnte man sich suchen...Ist ja mit den Ableitungen und so auch nicht schwer, einfach berechnen wo die Steigung eins ist und ab da umstellen. So sollte man die pixelgenau und eigentlich auch recht fix ziechnen lassen. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
HomeLess_PunkDrummer JLI Master Trainee

Alter: 36 Anmeldedatum: 28.11.2004 Beiträge: 583 Wohnort: Alter Joghurtbecher an der A4 Medaillen: Keine
|
Verfasst am: 02.12.2004, 19:48 Titel: |
|
|
Ich hab mal nachgedacht: Code: |
for(float x= Start; x < End, x+=(Abstand/Bild_Breite)
{
y=(Formel mit x);
Punkt malen(x,y);
} |
Kann doch gar nicht so viel Rechenarbeit beanspruchen _________________ "Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz." |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 02.12.2004, 20:06 Titel: |
|
|
Jonathan_Klein hat Folgendes geschrieben: | also Linien zeichnet man ja effektiv pixelweise, indem man einfach anschaut, in welche richtung es weiter geht (also ob Steigung größer oder kleiner 1 ist) |
Du meinst, wenn die Steigung größer, kleiner oder gleich 0 ist. ;)
Jonathan_Klein hat Folgendes geschrieben: |
und dann zu jedem Punkt auf der Längeren den Punkt auf der Kürzeren ausrechnet.
Bei Kurven allerdings würde es ja eine Umkehrung geben, da die Steigung sich verändert. Diese Punkt könnte man sich suchen...Ist ja mit den Ableitungen und so auch nicht schwer, einfach berechnen wo die Steigung eins ist und ab da umstellen. So sollte man die pixelgenau und eigentlich auch recht fix ziechnen lassen. |
An Extremstellen einer Kurve hat die 1. Ableitung den Wert 0, nicht 1. Und das muss nicht unbedingt eine Extremstelle sein, es könnte genauso gut ein Sattelpunkt sein(z.B. bei der Funktion f(x) = x^3.. da hat die erste Ableitung an der Stelle 0 den Wert 0, es ist aber keine Extremstelle. In diesem Falle muss man die 2. Ableitung auch noch analysieren). _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 02.12.2004, 21:01 Titel: |
|
|
also Ableitungen hatte ich offiziel noch nciht, nur mal eine Stunde in Physik kommt eigentlich erst nächstes Halbjahr...
Aber in einem normalen Koordinatensystem enspricht die Steigung 1 einem 45 Gradwinkel. Dabei sind die DeltaX und DeltaY immer gleich.
Also meinte ich schon 1. Hätte auch gerne eine plausible Antwort, warum das falsch sein soll. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 02.12.2004, 22:22 Titel: |
|
|
Zitat: | in welche richtung es weiter geht |
Eine Steigung von 1 sind 45° richtig... aber kleiner oder größer heißt nicht zwangsläufig, dass der Graph anfängt zu steigen/fallen. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
|