summaryrefslogtreecommitdiff
path: root/graphics/asymptote/webgl/arcball-min-0.01.js
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/asymptote/webgl/arcball-min-0.01.js')
-rw-r--r--graphics/asymptote/webgl/arcball-min-0.01.js1
1 files changed, 1 insertions, 0 deletions
diff --git a/graphics/asymptote/webgl/arcball-min-0.01.js b/graphics/asymptote/webgl/arcball-min-0.01.js
new file mode 100644
index 0000000000..9efc72fa4d
--- /dev/null
+++ b/graphics/asymptote/webgl/arcball-min-0.01.js
@@ -0,0 +1 @@
+var arcballLib={arcball:function(oldmouse,newmouse){let oldMouseNew=[0,0,0];let newMouseNew=[0,0,0];let testNorm=this.twonorm(oldmouse);if(testNorm>1){oldMouseNew[0]=oldmouse[0]/testNorm;oldMouseNew[1]=oldmouse[1]/testNorm}else{oldMouseNew[0]=oldmouse[0];oldMouseNew[1]=oldmouse[1]}let testNorm2=this.twonorm(newmouse);if(testNorm2>1){newMouseNew[0]=newmouse[0]/testNorm2;newMouseNew[1]=newmouse[1]/testNorm2}else{newMouseNew[0]=newmouse[0];newMouseNew[1]=newmouse[1]}var z1squared=1-oldMouseNew[1]**2-oldMouseNew[0]**2;if(z1squared<0&&z1squared>-1e-5){z1squared=0}var z2squared=1-newMouseNew[1]**2-newMouseNew[0]**2;if(z2squared<0&&z2squared>-1e-5){z2squared=0}oldMouseNew[2]=Math.sqrt(z1squared);newMouseNew[2]=Math.sqrt(z2squared);if(isNaN(oldMouseNew[2])||isNaN(newMouseNew[2])){alert("Error!")}let oldMouseVec=glm.vec3(...oldMouseNew);let newMouseVec=glm.vec3(...newMouseNew);let axis=glm.normalize(glm.cross(oldMouseVec,newMouseVec));let angle=Math.acos(glm.dot(oldMouseVec,newMouseVec));return[angle,axis]},twonorm:function(v){let normSq=0;for(let i=0;i<v.length;i++){normSq+=v[i]**2}return Math.sqrt(normSq)}}; \ No newline at end of file