diff --git a/index.html b/index.html index 0b8fd466c6b1498a669344dc9eccd31e646f6f1b..fcaa367aee897edea464ca7bc0e9516cbed79d55 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 0000000000000000000000000000000000000000..58ed4da62fe9e08eb39a92d7203a5f202bc7fe3f --- /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 fdd353b90406bfc5389484165d72d9830e5a1638..f390d67ff8a438be22d95109877634ac4153a861 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