JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=855315e3fcf77b40d3c209488601a055Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Graphen zeichnen
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 18.11.2004, 19:59    Titel: Graphen zeichnen Antworten mit Zitat

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... Confused
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 18.11.2004, 20:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 18.11.2004, 22:52    Titel: Antworten mit Zitat

wenn ich die Schrittweite verkleinere kann das bis zu einigen Minuten andauern bis der komplette Graph berechnet worden ist..Sad

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
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 18.11.2004, 23:14    Titel: Antworten mit Zitat

Das hier sieht meistens am schönsten aus:

http://www.we.fh-osnabrueck.de/fbwe/vorlesung/edv2/node17.html

Nachtrag:

In meinem LK wurde darüber eine Facharbeit geschrieben... ich kann ja mal schauen ob ich die besorgen kann falls dir die obige Information nicht reicht.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Maxim
Senior JLI'ler



Anmeldedatum: 28.03.2004
Beiträge: 249

Medaillen: Keine

BeitragVerfasst am: 19.11.2004, 16:54    Titel: Antworten mit Zitat

Ehhh,ich wollte am diesen Wochenende auch so ein Programm anfangen zu schreiben. Very Happy
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
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 19.11.2004, 20:00    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 20.11.2004, 09:55    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 21.11.2004, 11:30    Titel: Antworten mit Zitat

das wäre super wenn du die Facharbeit besorgen könntest. Smile
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Legolas87
JLI'ler


Alter: 37
Anmeldedatum: 22.10.2003
Beiträge: 131

Medaillen: Keine

BeitragVerfasst am: 02.12.2004, 11:24    Titel: Antworten mit Zitat

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 Wink . 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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 02.12.2004, 16:11    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 02.12.2004, 16:27    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 02.12.2004, 19:48    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 02.12.2004, 20:06    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 02.12.2004, 21:01    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 02.12.2004, 22:22    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum