mirror of
https://github.com/tdulcet/Table-and-Graph-Libs.git
synced 2025-12-16 00:18:55 +08:00
Updated to support and use modern C++ features and added more examples.
This commit is contained in:
106
graphs.cpp
106
graphs.cpp
@@ -1,40 +1,42 @@
|
||||
// Teal Dulcet, CS546
|
||||
|
||||
// Compile: g++ -Wall -g -O3 graphs.cpp -o graphs
|
||||
// Compile: g++ -Wall -g -O3 -std=c++17 graphs.cpp -o graphs
|
||||
|
||||
// Run: ./graphs
|
||||
|
||||
#include <cctype>
|
||||
#include <array>
|
||||
#include <vector>
|
||||
#include "graphs.hpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
long double afunction(long double x)
|
||||
constexpr long double afunction(long double x)
|
||||
{
|
||||
return x + 1;
|
||||
}
|
||||
|
||||
long double function1(long double x)
|
||||
constexpr long double function1(long double x)
|
||||
{
|
||||
return 2 * x;
|
||||
}
|
||||
|
||||
long double function2(long double x)
|
||||
constexpr long double function2(long double x)
|
||||
{
|
||||
return pow(x, 2);
|
||||
}
|
||||
|
||||
long double function3(long double x)
|
||||
constexpr long double function3(long double x)
|
||||
{
|
||||
return sin(x);
|
||||
}
|
||||
|
||||
long double function4(long double x)
|
||||
constexpr long double function4(long double x)
|
||||
{
|
||||
return cos(x);
|
||||
}
|
||||
|
||||
long double function5(long double x)
|
||||
constexpr long double function5(long double x)
|
||||
{
|
||||
return tan(x);
|
||||
}
|
||||
@@ -52,7 +54,7 @@ int main()
|
||||
const size_t rows = 10;
|
||||
const size_t columns = 2;
|
||||
|
||||
// Output array as plot
|
||||
// Output single array as plot
|
||||
cout << "\nOutput array as plot\n\n";
|
||||
{
|
||||
long double **array;
|
||||
@@ -62,18 +64,18 @@ int main()
|
||||
|
||||
for (unsigned int i = 0; i < rows; ++i)
|
||||
for (unsigned int j = 0; j < columns; ++j)
|
||||
array[i][j] = i + j; //rand();
|
||||
array[i][j] = i + j; // rand();
|
||||
|
||||
graphoptions aoptions;
|
||||
|
||||
for (unsigned int k = 0; k < (sizeof styles / sizeof styles[0]); ++k)
|
||||
for (unsigned int k = 0; k < size(styles); ++k)
|
||||
{
|
||||
aoptions.style = k;
|
||||
|
||||
graph(height, width, xmin, xmax, ymin, ymax, rows, array, aoptions);
|
||||
}
|
||||
|
||||
if (array != NULL)
|
||||
if (array != nullptr)
|
||||
{
|
||||
for (unsigned int i = 0; i < rows; ++i)
|
||||
delete[] array[i];
|
||||
@@ -81,12 +83,57 @@ int main()
|
||||
delete[] array;
|
||||
}
|
||||
}
|
||||
{
|
||||
array<array<long double, columns>, rows> aarray;
|
||||
|
||||
for (unsigned int i = 0; i < rows; ++i)
|
||||
for (unsigned int j = 0; j < columns; ++j)
|
||||
aarray[i][j] = i + j; // rand();
|
||||
|
||||
graphoptions aoptions;
|
||||
|
||||
for (unsigned int k = 0; k < size(styles); ++k)
|
||||
{
|
||||
aoptions.style = k;
|
||||
|
||||
graph(height, width, xmin, xmax, ymin, ymax, aarray, aoptions);
|
||||
}
|
||||
}
|
||||
{
|
||||
vector<vector<long double>> array(rows, vector<long double>(columns));
|
||||
|
||||
for (unsigned int i = 0; i < rows; ++i)
|
||||
for (unsigned int j = 0; j < columns; ++j)
|
||||
array[i][j] = i + j; // rand();
|
||||
|
||||
graphoptions aoptions;
|
||||
|
||||
for (unsigned int k = 0; k < size(styles); ++k)
|
||||
{
|
||||
aoptions.style = k;
|
||||
|
||||
graph(height, width, xmin, xmax, ymin, ymax, array, aoptions);
|
||||
}
|
||||
}
|
||||
// Output single function as graph
|
||||
cout << "\nOutput single function as graph\n\n";
|
||||
{
|
||||
graphoptions aoptions;
|
||||
|
||||
for (unsigned int k = 0; k < (sizeof styles / sizeof styles[0]); ++k)
|
||||
for (unsigned int k = 0; k < size(styles); ++k)
|
||||
{
|
||||
aoptions.style = k;
|
||||
|
||||
graph(height, width, xmin, xmax, ymin, ymax, afunction, aoptions);
|
||||
}
|
||||
}
|
||||
{
|
||||
function<long double(long double)> afunction = [](auto x)
|
||||
{ return x + 1; };
|
||||
|
||||
graphoptions aoptions;
|
||||
|
||||
for (unsigned int k = 0; k < size(styles); ++k)
|
||||
{
|
||||
aoptions.style = k;
|
||||
|
||||
@@ -96,11 +143,26 @@ int main()
|
||||
// Output multiple functions as graph
|
||||
cout << "\nOutput multiple functions as graph\n\n";
|
||||
{
|
||||
long double (*functions[])(long double) = {function1, function2};
|
||||
function<long double(long double)> functions[] = {function1, function2};
|
||||
|
||||
graphoptions aoptions;
|
||||
|
||||
for (unsigned int k = 0; k < (sizeof styles / sizeof styles[0]); ++k)
|
||||
for (unsigned int k = 0; k < size(styles); ++k)
|
||||
{
|
||||
aoptions.style = k;
|
||||
|
||||
graph(height, width, xmin, xmax, ymin, ymax, 2, functions, aoptions);
|
||||
}
|
||||
}
|
||||
{
|
||||
function<long double(long double)> functions[] = {[](auto x)
|
||||
{ return 2 * x; },
|
||||
[](auto x)
|
||||
{ return pow(x, 2); }};
|
||||
|
||||
graphoptions aoptions;
|
||||
|
||||
for (unsigned int k = 0; k < size(styles); ++k)
|
||||
{
|
||||
aoptions.style = k;
|
||||
|
||||
@@ -113,28 +175,30 @@ int main()
|
||||
const long double ymin = -4;
|
||||
const long double ymax = 4;
|
||||
|
||||
long double (*functions[])(long double) = {function3, function4, function5};
|
||||
function<long double(long double)> functions[] = {function3, function4, function5};
|
||||
|
||||
graphoptions aoptions;
|
||||
aoptions.axisunitslabel = false;
|
||||
// graphoptions aoptions{.axisunitslabel = false};
|
||||
|
||||
for (unsigned int k = 0; k < (sizeof styles / sizeof styles[0]); ++k)
|
||||
for (unsigned int k = 0; k < size(styles); ++k)
|
||||
{
|
||||
aoptions.style = k;
|
||||
|
||||
graph(height, width, xmin, xmax, ymin, ymax, 3, functions, aoptions);
|
||||
}
|
||||
|
||||
/*aoptions.style = 2;
|
||||
|
||||
/* aoptions.style = 2;
|
||||
|
||||
for (unsigned int k = 10; k < 300; ++k)
|
||||
{
|
||||
cout << "\e[1;1H" << "\e[2J";
|
||||
cout << "\e[1;1H"
|
||||
<< "\e[2J";
|
||||
|
||||
graph(k, k, xmin, xmax, ymin, ymax, 3, functions, aoptions);
|
||||
|
||||
|
||||
usleep(200000);
|
||||
}*/
|
||||
} */
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user