diff options
| author | Andrew <saintruler@gmail.com> | 2019-05-05 22:53:12 +0400 |
|---|---|---|
| committer | Andrew <saintruler@gmail.com> | 2019-05-05 22:53:12 +0400 |
| commit | 3a94328b3cff255ac64a208ac98919cc3e530aa0 (patch) | |
| tree | 377ab395a13e95b5c12a442645c2eaa4b2a644f8 /Canvas/cpu | |
| parent | 15ccb946f43283bfc91d80ddf012d9ae2a0333ed (diff) | |
Made changes to CMakeLists.txt so CUDA version of program builds when CUDA is installed.
Replaced C-style approach to generating texture to OOP-style with Canvas.h
Diffstat (limited to 'Canvas/cpu')
| -rw-r--r-- | Canvas/cpu/CalculateCanvas.cpp | 60 | ||||
| -rw-r--r-- | Canvas/cpu/CalculateCanvas.h | 15 |
2 files changed, 75 insertions, 0 deletions
diff --git a/Canvas/cpu/CalculateCanvas.cpp b/Canvas/cpu/CalculateCanvas.cpp new file mode 100644 index 0000000..75a9996 --- /dev/null +++ b/Canvas/cpu/CalculateCanvas.cpp @@ -0,0 +1,60 @@ +// +// Created by saintruler on 05.05.19. +// +#include "CalculateCanvas.h" + +void calculate(unsigned char* canvas, int width, Point* points, int nPoints, int canvasX, int canvasY) +{ + int pathX, pathY; + int length_squared; + double f = 0; + + for (int i = 0; i < nPoints; i++) + { + pathX = points[i].x - canvasX; + pathY = points[i].y - canvasY; + + length_squared = pathX * pathX + pathY * pathY; + f += (1e5 * 20) / (float) length_squared; + } + + int l = (int) f; + if (l > 255) l = 255; + + canvas[canvasY * width * 3 + canvasX * 3 + 0] = l; + canvas[canvasY * width * 3 + canvasX * 3 + 1] = 0; + canvas[canvasY * width * 3 + canvasX * 3 + 2] = 0; +} + +//void calculate(unsigned char* canvas, int width, Point* points, int nPoints, int canvasX, int canvasY) +// point canvas_pt(canvasX, canvasY); +// double f = 0; +// for (point pt : points) +// { +// point path = pt - canvas_pt; +// +// f += (1e5 * 20 * 1) / path.length_sqared(); +// } +// +// int l = (int) f; +// if (l > 255) l = 255; +// +// +// canvas[y * SCR_WIDTH * 3 + x * 3 + 0] = l; +// canvas[y * SCR_WIDTH * 3 + x * 3 + 1] = 0; +// canvas[y * SCR_WIDTH * 3 + x * 3 + 2] = 0; +//} + + + +void generate_canvas(int width, int height, unsigned char* canvas, Point* points, int nPoints) +{ + for (int x = 0; x < width; x++) + { + for (int y = 0; y < height; y++) + { + calculate(canvas, width, points, nPoints, x, y); + } + } +} + diff --git a/Canvas/cpu/CalculateCanvas.h b/Canvas/cpu/CalculateCanvas.h new file mode 100644 index 0000000..c1a1662 --- /dev/null +++ b/Canvas/cpu/CalculateCanvas.h @@ -0,0 +1,15 @@ +// +// Created by saintruler on 05.05.19. +// + +#ifndef OPENGLTEST_CALCULATECANVAS_H +#define OPENGLTEST_CALCULATECANVAS_H + +#include <Point.h> + + +void calculate(unsigned char* canvas, int width, Point* points, int nPoints, int canvasX, int canvasY); + +void generate_canvas(int width, int height, unsigned char* canvas, Point* points, int nPoints); + +#endif //OPENGLTEST_CALCULATECANVAS_H |