From 01b6c3bb6b7e18136b573b8e834693a93c180496 Mon Sep 17 00:00:00 2001
From: Nao Pross <naopross@thearcway.org>
Date: Sun, 9 Dec 2018 23:16:29 +0100
Subject: Update vector ex. makefile and add vec3_mag function

---
 vector/makefile | 8 ++++++--
 vector/vector.c | 9 ++++++++-
 2 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/vector/makefile b/vector/makefile
index 6ce8fd9..ad56656 100644
--- a/vector/makefile
+++ b/vector/makefile
@@ -1,17 +1,21 @@
 CARGS   := -Wall -Werror -I.
+LDARGS  := -lm
 CPPARGS := -Wall -Werror -I.
 
-all: cpp-vector.pdf c_build/vectors
+all: vector.pdf c_build/vector
 
 %.pdf: %.md
 	pandoc \
+        --from=markdown+raw_tex \
 		--latex-engine=xelatex \
+        --number-sections \
 		--filter pandoc-include-code \
+        --highlight-style tango \
 		$< -o $@
 
 c_build/%: %.c
 	mkdir -p c_build
-	gcc $(CARGS) $< -o $@
+	gcc $(CARGS) $< -o $@ $(LDARGS)
 
 cpp_build/%: %.cpp
 	mkdir -p cpp_build
diff --git a/vector/vector.c b/vector/vector.c
index c8a5906..59f48cc 100644
--- a/vector/vector.c
+++ b/vector/vector.c
@@ -1,5 +1,6 @@
 #include <stddef.h>
 #include <stdio.h>
+#include <math.h>
 
 struct vec3 {
     double x;
@@ -64,12 +65,16 @@ struct vec3 vec3_cross(struct vec3 * const v, struct vec3 * const u)
     return result;
 }
 
+double vec3_mag(struct vec3 * const v) {
+    return sqrt((v->x * v->x) + (v->y * v->y) + (v->z * v->z));
+}
+
 void vec3_print(struct vec3 * const v)
 {
     if (v == NULL)
         return;
 
-    printf("<%.2f,%.2f,%.2f>\n", v->x, v->y, v->y);
+    printf("<%.2f,%.2f,%.2f>\n", v->x, v->y, v->z);
 }
 
 
@@ -84,6 +89,8 @@ int main(int argc, char *argv[])
     printf("b = ");
     vec3_print(&b);
 
+    printf("||a|| = %f\n", vec3_mag(&a));
+
     printf("sum a + b     : ");
     res = vec3_add(&a, &b);
     vec3_print(&res);
-- 
cgit v1.2.1