summaryrefslogtreecommitdiff
path: root/Canvas/cpu
diff options
context:
space:
mode:
Diffstat (limited to 'Canvas/cpu')
-rw-r--r--Canvas/cpu/CalculateCanvas.cpp60
-rw-r--r--Canvas/cpu/CalculateCanvas.h15
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