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
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).
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:)
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 :)
@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.