diff --git a/src/cg/testing.ts b/src/cg/testing.ts index d20e5217eb7da99c9e1177f336e0fbd23c6daceb..60237e1e5f13e32f229ad02566bed663a777dd53 100644 --- a/src/cg/testing.ts +++ b/src/cg/testing.ts @@ -3,29 +3,23 @@ import { vecNormalize } from "./utils"; import { vecLength } from "./utils"; import { vecDotProduct } from "./utils"; import { vecAngle } from "./utils"; +import { vecCrossProduct } from "./utils"; const pg = new Playground(); // Some vectors const v = [1,0,1] -const w = [0,0,2] +const w = [0,2,2] -const vNormalized = vecNormalize(v); -const wNormalized = vecNormalize(w); - -const dotProduct = vecDotProduct(v, w); -const normalizedDotProduct = vecDotProduct(vNormalized, wNormalized); +const cp = vecCrossProduct(w, v); // Visualize pg.gridXZ(); // Grid pg.visVector(v,{color:"orange",label:"V"}); pg.visVector(w,{color:"red",label:"W"}); +pg.visVector(cp,{color:"grey",label:"crossproduct"}) console.log("v length:" + vecLength(v)); console.log("w length:" + vecLength(w)); -console.log("dotProduct:" + dotProduct); -console.log("vnormalized length:" + vecLength(vNormalized)); -console.log("wnormalized length:" + vecLength(wNormalized)); -console.log("normalizedDotProduct:" + normalizedDotProduct); -console.log("angle v w:" + vecAngle(v, w)); \ No newline at end of file +console.log("normalized dotProduct:" + vecDotProduct(vecNormalize(v), vecNormalize(w))); diff --git a/src/cg/utils.ts b/src/cg/utils.ts index 9582fe45c1930bcbec773f0fa0fa33e22199c978..fc005a4714f1f925216311876e718f89355e7200 100644 --- a/src/cg/utils.ts +++ b/src/cg/utils.ts @@ -62,4 +62,14 @@ export function vecAngle(vecOne: Array<number>, vecTwo: Array<number>){ let degrees = radiant * 180 / Math.PI; return degrees; } + +export function vecCrossProduct(vecOne: Array<number>, vecTwo: Array<number>){ + let crossProduct : Array<number> = new Array; + + crossProduct[0] = vecOne[1]*vecTwo[2] - vecOne[2]*vecTwo[1]; + crossProduct[1] = vecOne[2]*vecTwo[0] - vecOne[0]*vecTwo[2]; + crossProduct[2] = vecOne[0]*vecTwo[1] - vecOne[1]*vecTwo[0]; + + return crossProduct; +} // \ No newline at end of file