# Plotting example

We're aiming to create a knowledge hub for 3D printing of the future.

## Plot cos(8π)

In this section, we will show how to plot a cos(8π) image. Please note, in `line 29` , since we want to include the 8π point, the denominator is `N-1` instead of `N`. This will help you to understand the “zero-based” indexing.

Now, try to plot sin(4π) with 4π point and without 4π point respectively.

```#include <iostream>
#include <vector>

#define cimg_display 0
#include "CImg.h"
using namespace cimg_library;

const double pi = 3.141592653589793238462643383279;

// Plotting function
void make_plot(const std::vector<double>& x) {
CImg<unsigned char> graph(500, 400, 1, 3, 0);
const unsigned char red[] = {255, 0, 0}, green[] = {0, 255, 0}, blue[] = {0, 0, 255};
CImg<double>        values(1, x.size(), 1, 1, 0);
for (int i1 = 0; i1 < x.size(); ++i1) {
values(0, i1) = x[i1];
}
graph.fill(255).draw_graph(values, blue, 1, 2).save_bmp("plot.bmp");
}

int main() {
const size_t N = 1024;

std::vector<double> y(N);

// Compute sin(6*x) on interval [0, 1] -- inclusive of 1
for (size_t i = 0; i < N; ++i) {
y[i] = cos((8*pi*i)/(N-1));
}

make_plot(y);

if (y[0] == 0 && y[1022] != 0 && std::abs(y[1023]) < 2.e-15) {
std::cout << "Pass " << y[1023] << std::endl;
return 0;    // return success value
} else {
std::cout << "Fail " << y[1023] << std::endl;
return 1;    // return other than success value
}

return 0;      // default return success value
}

```