program do rysowania wykresów funkcji

0

Drodzy,
ostatnio na zajęciach z IT mieliśmy wybrać projekty z C++ do zrobienia na najbliższe 2 miesiące.
Jako, że żaden z zaproponowanych przez prowadzącego mi się nie spodobał, a od kiedy programuję chciałbym napisać program do rysowania wykresów funkcji zgłosiłem się i powiedziałem że to zrobię.
Dla mnie celem tego projektu jest ogarnięcie C++ i wykonanie go w miarę szybkim tępię.
Zatem mam prośbę:
Czy moglibyście mi w punktach napisać od czego mam zacząć i co robić potem itd
Założenie jest taki: wpisuję wzór w notacji normalnej i wyświetla się wykres na ekranie
Z góry dziękuję,
Hans

0

Trzeba mierzyć siły na zamiary. Co potrafisz z C++ i jakie projekty do tej pory zrobiłeś?

Połowa tego projektu to napisanie parsera i ewalutora wyrażeń (gotowy algorytm: http://pl.wikipedia.org/wiki/Odwrotna_notacja_polska). Druga połowa to interfejs i narysowanie wykresu (linie od jednego obliczonego punktu do drugiego w niewielkich krokach).

0

Czyli najpierw muszę rozkminić konwersje do RPN a potem zrobić zapisywanie wartości funkcji do tablicy, żeby potem z tego zrobić ładny wykres.
Dzięki za link, dzisiaj ten artykuł był prze zemnie czytany wielokrotnie jednak mam problemy z implementacją, poza tym jak działa taki algorytm gdy we wzorze pojawi się sin czy cos?
Jak już rozwalę konwersję do RPN to potrzebna pewnie będzie funkcja do obliczania wartości i zapisywania do tablicy czy mam rację?
potem machniem interfejs i będziemy się zastanawiali nad dołączeniem grafiki(pyt: dobrze to planuję??)

Dziękuję za każdą pomoc i proszę o nią bardzo:)

0

A tak poza tym, skoro chcesz projekt skończyć w miarę szybkim tempie, to najlepiej użyj bibliotek, a np. nie implementuj ONP po raz n-ty...

Do parsowania wyrażeń: http://www.gnu.org/software/libmatheval/
Zestaw komponentów do rysowania wykresów w Qt: http://qwt.sourceforge.net/

To co podałem to tylko przykłady. Pewnie jak się rozejrzysz to znajdziesz inne biblioteki, które Ci będą bardziej pasować. Mój kolega ze studiów na projekt z C++ pisał rysowanie wykresów z użyciem wxWidgets. Zobacz stronę http://wiki.wxwidgets.org/Graphics#Graphing_Functions - nawet na dole masz spis, czego możesz użyć do rysowania wykresów w wx :)

0

@Spine z twoim rozumowaniem to można zrobić tak:

#include <iostream>
#include <string>
#include <RInside.h>

int main(int argc, char* argv) {
  RInside R(argc, argv);

  std::string fun;
  std::cin >> fun;
  // jakieś tam sprawdzanie poprawności danych

  R["fun"] = "function(x) " + fun;
  R.parseEvalQ("plot(fun, -10, 10)");
}

Kod nietestowany ale powinien działać w podobnej formie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1