THREE.Curve.create(function(a){this.points=void 0==a?[]:a},function(a){var b=new THREE.Vector3,c=[],d=this.points,e,a=(d.length-1)*a;e=Math.floor(a);a-=e;c[0]=0==e?e:e-1;c[1]=e;c[2]=e>d.length-2?d.length-1:e+1;c[3]=e>d.length-3?d.length-1:e+2;e=d[c[0]];var f=d[c[1]],h=d[c[2]],c=d[c[3]];b.x=THREE.Curve.Utils.interpolate(e.x,f.x,h.x,c.x,a);b.y=THREE.Curve.Utils.interpolate(e.y,f.y,h.y,c.y,a);b.z=THREE.Curve.Utils.interpolate(e.z,f.z,h.z,c.z,a);return b})
// QR decomposition in pure javascript function qrJs() { var m = this.rows(); var n = this.cols(); var Q = Matrix.I(m); var A = this; for(var k = 1; k < Math.min(m, n); k++) { var ak = A.slice(k, 0, k, k).col(1); var oneZero = [1]; while(oneZero.length <= m - k) oneZero.push(0); oneZero = $V(oneZero); var vk = ak.add(oneZero.x(ak.norm() * Math.sign(ak.e(1)))); var Vk = $M(vk); var Hk = Matrix.I(m - k + 1).subtract(Vk.x(2).x(Vk.transpose()).div(Vk.transpose().x(Vk).e(1, 1))); var Qk = identSize(Hk, m, n, k); A = Qk.x(A); // slow way to compute Q Q = Q.x(Qk); } return {Q: Q, R: A}; }
// QR decomposition in pure javascript function qrJs() { var m = this.rows(); var n = this.cols(); var Q = Matrix.I(m); var A = this; for(var k = 1; k < Math.min(m, n); k++) { var ak = A.slice(k, 0, k, k).col(1); var oneZero = [1]; while(oneZero.length <= m - k) oneZero.push(0); oneZero = $V(oneZero); var vk = ak.add(oneZero.x(ak.norm() * Math.sign(ak.e(1)))); var Vk = $M(vk); var Hk = Matrix.I(m - k + 1).subtract(Vk.x(2).x(Vk.transpose()).div(Vk.transpose().x(Vk).e(1, 1))); var Qk = identSize(Hk, m, n, k); A = Qk.x(A); // slow way to compute Q Q = Q.x(Qk); } return {Q: Q, R: A}; }