From bb1a14d4d3a1c26a5d48c8e54db6ede3416ea83e Mon Sep 17 00:00:00 2001
From: fdai7322 <christoph-anton.schwierz@informatik.hs-fulda.de>
Date: Mon, 3 Jun 2024 18:31:30 +0200
Subject: [PATCH] vecNormalize

---
 index.html        |  5 +++--
 src/cg/testing.ts | 18 ++++++++++++++++++
 src/cg/utils.ts   | 15 +++++++++++++++
 3 files changed, 36 insertions(+), 2 deletions(-)
 create mode 100644 src/cg/testing.ts

diff --git a/index.html b/index.html
index 0b8fd46..fcaa367 100644
--- a/index.html
+++ b/index.html
@@ -13,7 +13,8 @@
     <script type="module" src="/src/cg/pgIntro.ts"></script>
     <script type="module" src="/src/cg/vector.ts"></script>
     <script type="module" src="/src/cg/perspectiveDivide.ts"></script>
-    <script type="module" src="/src/cg/walkToVec.ts"></script-->
-    <script type="module" src="/src/cg/basis.ts"></script>
+    <script type="module" src="/src/cg/walkToVec.ts"></script>
+    <script type="module" src="/src/cg/basis.ts"></script-->
+    <script type="module" src="/src/cg/testing.ts"></script>
   </body>
 </html>
diff --git a/src/cg/testing.ts b/src/cg/testing.ts
new file mode 100644
index 0000000..58ed4da
--- /dev/null
+++ b/src/cg/testing.ts
@@ -0,0 +1,18 @@
+import Playground from "./playground";
+import { vecNormalize } from "./utils";
+import { vecLength } from "./utils";
+
+const pg = new Playground();
+
+// Some vectors
+const v = [2,2,3]
+
+const normalized = vecNormalize(v);
+
+console.log(vecLength(normalized));
+
+// Visualize
+pg.gridXZ(); // Grid
+
+pg.visVector(v,{color:"orange",label:"V"});
+pg.visVector(normalized,{color:"red",label:"normalized"});
diff --git a/src/cg/utils.ts b/src/cg/utils.ts
index fdd353b..f390d67 100644
--- a/src/cg/utils.ts
+++ b/src/cg/utils.ts
@@ -33,4 +33,19 @@ export function vecLength(vec: Array<number>){
     length = Math.sqrt(vec[0]*vec[0] + vec[1]*vec[1] + vec[2]*vec[2]);
     return length;
 }
+
+export function vecNormalize(vec: Array<number>){
+    let computedLength = vecLength(vec);
+    if(computedLength == 0){computedLength = 1};
+
+    let inverse = 1 / computedLength;
+
+    let normalized: Array<number> = new Array;
+
+    normalized[0] = vec[0] * inverse;
+    normalized[1] = vec[1] * inverse;
+    normalized[2] = vec[2] * inverse;
+
+    return normalized;
+}
 //
\ No newline at end of file
-- 
GitLab