aboutsummaryrefslogtreecommitdiff
path: root/tools/lighthousefind_tori/visualization.c
diff options
context:
space:
mode:
authorMike Turvey <mturvey6@gmail.com>2017-02-05 23:01:34 -0700
committerMichael Turvey <mturvey6@gmail.com>2017-02-05 23:57:51 -0700
commit7ea248577178f45033802ba5cc2867f8a66d69f8 (patch)
tree6bf3c7385d5aafc61e69a7d8dbe329bfeb52ec45 /tools/lighthousefind_tori/visualization.c
parent2afbb0313dafe3f52a38ee2061cb1de8043d16e6 (diff)
downloadlibsurvive-7ea248577178f45033802ba5cc2867f8a66d69f8.tar.gz
libsurvive-7ea248577178f45033802ba5cc2867f8a66d69f8.tar.bz2
Adding lighthousefind_tori
Diffstat (limited to 'tools/lighthousefind_tori/visualization.c')
-rw-r--r--tools/lighthousefind_tori/visualization.c94
1 files changed, 94 insertions, 0 deletions
diff --git a/tools/lighthousefind_tori/visualization.c b/tools/lighthousefind_tori/visualization.c
new file mode 100644
index 0000000..d348c2d
--- /dev/null
+++ b/tools/lighthousefind_tori/visualization.c
@@ -0,0 +1,94 @@
+#include "visualization.h"
+#include "tori_includes.h"
+
+int pointsWritten = 0;
+
+
+void writePoint(FILE *file, double x, double y, double z, unsigned int rgb)
+{
+ fprintf(file, "%f %f %f %u\n", x, y, z, rgb);
+ pointsWritten++;
+}
+
+void updateHeader(FILE * file)
+{
+ fseek(file, 0x4C, SEEK_SET);
+ fprintf(file, "%d", pointsWritten);
+ fseek(file, 0x7C, SEEK_SET);
+ fprintf(file, "%d", pointsWritten);
+}
+void writeAxes(FILE * file)
+{
+ double scale = 5;
+ for (double i = 0; i < scale; i = i + scale / 1000)
+ {
+ writePoint(file, i, 0, 0, 255);
+ }
+ for (double i = 0; i < scale; i = i + scale / 1000)
+ {
+ if ((int)(i / (scale / 5)) % 2 == 1)
+ {
+ writePoint(file, 0, i, 0, 255 << 8);
+ }
+ }
+ for (double i = 0; i < scale; i = i + scale / 10001)
+ {
+ if ((int)(i / (scale / 10)) % 2 == 1)
+ {
+ writePoint(file, 0, 0, i, 255 << 16);
+ }
+ }
+}
+
+void drawLineBetweenPoints(FILE *file, Point a, Point b, unsigned int color)
+{
+ int max = 50;
+ for (int i = 0; i < max; i++)
+ {
+ writePoint(file,
+ (a.x*i + b.x*(max - i)) / max,
+ (a.y*i + b.y*(max - i)) / max,
+ (a.z*i + b.z*(max - i)) / max,
+ color);
+ }
+}
+
+void writePcdHeader(FILE * file)
+{
+ fprintf(file, "VERSION 0.7\n");
+ fprintf(file, "FIELDS x y z rgb\n");
+ fprintf(file, "SIZE 4 4 4 4\n");
+ fprintf(file, "TYPE F F F U\n");
+ fprintf(file, "COUNT 1 1 1 1\n");
+ fprintf(file, "WIDTH \n");
+ fprintf(file, "HEIGHT 1\n");
+ fprintf(file, "VIEWPOINT 0 0 0 1 0 0 0\n");
+ fprintf(file, "POINTS \n");
+ fprintf(file, "DATA ascii\n");
+
+ //fprintf(file, "100000.0, 100000.0, 100000\n");
+
+}
+
+void writePointCloud(FILE *f, Point *pointCloud, unsigned int Color)
+{
+ Point *currentPoint = pointCloud;
+
+ while (currentPoint->x != -1000 || currentPoint->y != -1000 || currentPoint->z != -1000)
+ {
+ writePoint(f, currentPoint->x, currentPoint->y, currentPoint->z, Color);
+ currentPoint++;
+ }
+}
+
+void markPointWithStar(FILE *file, Point point, unsigned int color)
+{
+ double i;
+ for (i = -0.8; i <= 0.8; i = i + 0.0025)
+ {
+ writePoint(file, point.x + i, point.y, point.z, color);
+ writePoint(file, point.x, point.y + i, point.z, color);
+ writePoint(file, point.x, point.y, point.z + i, color);
+ }
+
+}