'vektorilaskut' "function normi(v) {\n" +"return Math.sqrt(v[0]**2+v[1]**2+v[2]**2);\n" +"}\n\n" +"function skaalaa(v,t) {\n" +"var w=[];\n" +"w.push(v[0]*t);\n" +"w.push(v[1]*t);\n" +"w.push(v[2]*t);\n" +"return w;\n" +"}\n\n" +"function summa(u,v) {\n" +"var w=[];\n" +"w.push(u[0]+v[0]);\n" +"w.push(u[1]+v[1]);\n" +"w.push(u[1]+v[2]);\n" +"return w;\n" +"}\n\n" +"function erotus(u,v) {\n" +"return summa(u,skaalaa(v,-1));\n" +"}\n\n" +"function pituinen(v,t) {\n" +"if (normi(v)<0.01) {\n" +"return v;\n" +"} else {\n" +"var w=[];\n" +"w.push(v[0]*t/normi(v));\n" +"w.push(v[1]*t/normi(v));\n" +"w.push(v[2]*t/normi(v));\n" +"return w;\n" +"}\n" +"}\n\n" +"function yksikko(v) {\n" +"var w=[];\n" +"w.push(v[0]/normi(v));\n" +"w.push(v[1]/normi(v));\n" +"w.push(v[2]/normi(v));\n" +"return w;\n" +"}\n\n" +"function kohtisuora(v) {\n" +"u=skaalaa(v,normi(v));\n" +"if (Math.abs(u[0])<0.05) {\n" +"w=[1,0,0];\n" +"} else if (Math.abs(u[1])<0.05) {\n" +"w=[0,1,0];\n" +"} else {\n" +"w=[u[1],-u[0],0];\n" +"}\n" +"return yksikko(w);\n" +"}\n\n" +"function ristitulo(u,v) {\n" +"var w=[];\n" +"w[0]=u[1]*v[2]-u[2]*v[1];\n" +"w[1]=u[2]*v[0]-u[0]*v[2];\n" +"w[2]=u[0]*v[1]-u[1]*v[0];\n" +"return w;\n" +"}\n\n";