PChart

Prosty program przeznaczony do rysowania wykresów z użyciem OpenGL.

04.08.2024 21:00 Paint Chart

Program PChart to prosty program pozwalający wyświetlić narysowany wykres z danych wczytanych z pliku tekstowego. Jego nazwa to skrót od Paint Chart, a to oczywiście odzwierciedla jego cel, ponieważ służy do rysowania wykresów.

Pierwsza wersja programu miała bardzo ograniczone możliwości, ale wersja która znajduje się aktualnie na stronie jest poprawiona oraz rozbudowana. Program pozwala rysować wykresy z danych wczytywanych z pliku tekstowego z danymi. Dane nie muszą być już tylko liczbami całkowitymi - program przyjmuje także wartości zmiennoprzecinkowe. Obszar rysowania wykresu można zmieniać w pliku konfiguracyjnym, a podczas działania programu można się po nim przemieszczać.

Plik config.ini pozwala zmieniać niektóre parametry programu i precyzować plik wejściowy z danymi. Struktura pliku jest bardzo prosta. Jest to zwykły plik tekstowy, w którym można dowolnie umieszczać spacje, tabulatory i entery. Każda linijka z rozpoznawaną komendą powinna kończyć się średnikiem. Do określenia wartości nie jest używany cudzysłów ani nawiasy. Wartości liczbowe powinny być wartościami całkowitymi a komendy muszą być napisane z uwzględnieniem wielkości liter. Poniżej znajdują się rozpoznawane opcje możliwe do umieszczenia w pliku config.ini wraz z przykładami i opisem:

OpcjaPrzykładOpis
Input: [filename];Input: in.txt;Ustawia filename jako plik z danymi
Line: [width];Line: 2;Ustawia grubość lini do rysowania wykresu
Point: [size];Point: 2;Ustawia wielkość punku (nieużywane)
Background-color: [r], [g], [b];Background-color: 0, 0, 0;Ustawia kolor tła (wartości 0-255)
Color: [r], [g], [b];Color: 0, 0, 0;Ustawia kolor wykresu (wartości 0-255)
Delimiter: [delim];Delimiter: &;Ustawia znak rozdzielający dane (białe znaki nie mogą rozdzielać danych)
Step: [px];Step: 40;Ustawia wielkość jednostki miary w pikselach (odstępy między kolejnymi miarami jednostki)
Range: [range];Range: 15;Ustawia wyświetlaną ilość jednostek miary w każdą stronę od środka układu współrzędnych

Plik z danymi jest o wiele prostszy niż plik konfiguracyjny, jednakże jego struktura musi być dokładnie przestrzegana, ponieważ jest na nim przeprowadzane mniej testów zabezpieczających przed podaniem złych danych, lub danych w złym formacie. W pliku z danymi mogą występować znaki białe jak spacje, tabulatory czy entery (są one usuwane podczas wczytywania). Plik powinien zawierać serię danych składających się z kolejnych wartości X i Y. Wartości X i Y muszą być rozdzielone znakiem przecinka i muszą zawsze występować w parach. W przeciwieństwie do wartości w pliku config.ini, dane nie muszą być wartościami całkowitymi. Kolejne pary danych X i Y muszą być rozdzielone znakami podanymi jako delimiter (lub jeśli w pliku config.ini, nie ma wpisanej opcji Delimiter: znakiem rozdzielającym jest średnik). W odróżnieniu od poprzedniej wersji, znak podziału może znajdować się także na samym końcu serii danych jako ostatni znak. Przykładowy ciąg danych zapisany w poprawnym formacie dla programu, przy użyciu standardowego znaku podziału danych (średnika) to np.:

0,0;1,1;2,2;3,3;4,4;5,5;6,5;7,5;8,6;9,7;10,7;11,7;12,6;13,5;14,4;15,4;16,3;17,2;18,2;19,2;20,1;21,1;22,0
0,1;1,1.5;2,1.75;2.5,1.825;2.75,2.3;3.2,3.1;

Obydwa pwyższe ciągi danych są poprawne.

Po uruchomieniu program PChart wyświetla od razu narysowany wykres z danych wczytanych z podanego pliku wejściowego (lub jeśli nie sprecyzowano pliku z danymi, szuka pliku in.txt). Podczas działania programu użytkownik może przemieszczać widok, aby zobaczyć inne obszary wykresu, przy pomocy strzałek. Przyciśnięcie klawisza przesuwa widok o 10 pikseli w konkretną stronę w zależności od przyciśniętej strzałki. Niestety nie ma łatwego sposobu przemieszczania się o duże wartości, strzałkę trzeba przyciskać za każdym razem, aby przesunąć się o kolejne 10 pikseli. Rozwiązaniem tego problemu może być odpowiednie skalowanie wykresu opcją Step: w pliku config.ini. Im mniejszy krok, tym cały wykres będzie mniejszy. Jeśli jednak podczas eksploracji wykresu gdzieś się zagubisz, możesz użyć klawisza C, aby przywrócić widok na środek układu współrzędnych.

SinGen to prosta aplikacja konsolowa, która jest stworzona jako dodatek do programu PChart. Można ją uruchomić z poziomu konsoli, a służy ona do generowania plików z danymi w formacie PChart z wykresem sinusa. Program oczekuje dwóch argumentów przy uruchomieniu. Pierwszy to ilość próbek, czyli jak dużo wartości ma zostać wygenerowanych i zapisanych w pliku. Drugi natomiast to zakres w jakim mają znajdować się wartości (aplituda sinusa). Program zawsze generuje wykres dla przedziału od zera do dwóch pi. Pierwszy parametr mówi o tym ile próbek ma zostać wykonane na tym zakresie (im większy ten parametr, tym dokładniejszy wykres sinusoidy wyjdzie). Drugi parametr pozwala po prostu manipulować amplitudą sinusoidy (jeśli jest to np. 10 sinusoida będzie przyjmowała wartości od -10 do 10).

Plik projektu to archiwum .rar w którym znajduje się kilka kolejnych plików. Najważniejsze z nich to Pchart.exe (plik wykonywalny programu PChart) oraz plik sinGen.exe (pomocnicza aplikacja do generowania dancyh w formacie PChart). Pozostałe pliki to config.ini (plik konfiguracyjny, jeśli nie istnieje, program nie będzie działał, ale wystarczy, że zostanie utworzony nawet pusty plik config.ini i program uruchomi się ze standardowymi ustawieniami oczekując na dane w pliku in.txt), dane.txt (przykładowe dane dla programu), glfw3.dll (biblioteka do manipulacji oknami systemowymi) oraz glew32.dll (biblioteka do łatwiejszego zarządzania wersją OpenGL).

Aby uruchomić program należy zawartość pliku .rar wypakować do wybranego folderu, a następnie uruchomić plik Pchart.exe (ewentualnie zmienić najpierw plik config.ini i plik z danymi). Plik sinGen.exe musi być uruchomiony z poziomu konsoli, aby działał poprawnie i musi mieć podane dwa argumenty, których się spodziewa. Jeśli na systemie nie ma odpowiednich bibliotek OpenGL, lub wersja OpenGL 3.2 nie jest obsługiwana, program może się nie uruchomić. Ponadto, aby program uruchomił się prawidłowo wymagane jest posiadanie bibliotek Visual C++ Redistributable for Visual Studio 2015.