tk87
let clamp = (x,a,b) => (x>a ? x<b ? x : b : a);
let length = (p) => (Math.sqrt(p.x*p.x+p.y*p.y+p.z*p.z));
let rotate2D = (r) => ([Math.cos(r), Math.sin(r), -Math.sin(r), Math.cos(r)]);
let mmul1 = (p,m) => {let a = p.y*m[0]+p.x*m[1]; let b = p.y*m[2]+p.x*m[3]; p.y=a;p.x=b; };
let mmul2 = (p,m) => {let a = p.z*m[0]+p.x*m[1]; let b = p.z*m[2]+p.x*m[3]; p.z=a;p.x=b; };