Index: ../trunk-jpl/src/m/plot/webgl.js =================================================================== --- ../trunk-jpl/src/m/plot/webgl.js (revision 20769) +++ ../trunk-jpl/src/m/plot/webgl.js (revision 20770) @@ -49,7 +49,7 @@ canvas.zoomFactor = clamp(options.getfieldvalue('zoom',1.0), canvas.zoomBounds[0], canvas.zoomBounds[1]); canvas.zoomLast = canvas.zoomFactor; canvas.cameraMatrix = mat4.create(); - canvas.translation = options.getfieldvalue('centeroffset',[0,0,0.0]); + canvas.translation = options.getfieldvalue('origin',[0,0,0.0]); canvas.rotationAzimuthBounds = options.getfieldvalue('azlim',[0,360]); canvas.rotationElevationBounds = options.getfieldvalue('ellim',[-180,180]); canvas.rotationDefault = options.getfieldvalue('view',[0,90]); //0 azimuth - up is north, 90 elevation - looking straight down @@ -60,13 +60,6 @@ canvas.movieReverse = false; canvas.movieIncrement = true; canvas.moviefps = options.getfieldvalue('moviefps',5); - - if (canvas.twod) { - canvas.rotationAzimuthBounds = [0,0]; - canvas.rotationElevationBounds = [90,90]; - canvas.rotationDefault = [0,90]; - canvas.rotation = canvas.rotationDefault; - } // Add event listeners for canvas var displayview = options.getfieldvalue('displayview','off') == 'on'; @@ -395,12 +388,13 @@ var rotationMatrix = mat4.create(); var azimuthRotationMatrix = mat4.create(); var elevationRotationMatrix = mat4.create(); + var aspectRatio = canvas.clientWidth / canvas.clientHeight; if (canvas.twod) { - mat4.ortho(pMatrix, -1/canvas.zoomFactor, 1/canvas.zoomFactor, -1/canvas.zoomFactor, 1/canvas.zoomFactor, -1.0, 10000.0); + mat4.ortho(pMatrix, -1*aspectRatio/canvas.zoomFactor, 1*aspectRatio/canvas.zoomFactor, -1*aspectRatio/canvas.zoomFactor, 1*aspectRatio/canvas.zoomFactor, -1.0, 10000.0); } else { - mat4.perspective(pMatrix, 60 * Math.PI / 180, canvas.clientWidth / canvas.clientHeight, 0.001, 10000.0); + mat4.perspective(pMatrix, 60 * Math.PI / 180, aspectRatio, 0.001, 10000.0); } //Apply worldspace translation @@ -408,9 +402,16 @@ mat4.multiply(vMatrix, translateMatrix, vMatrix); //Calculate rotation around camera focal point about worldspace origin - mat4.rotate(azimuthRotationMatrix, azimuthRotationMatrix, radians(canvas.rotation[0]), [0, 1, 0]); - mat4.rotate(elevationRotationMatrix, elevationRotationMatrix, radians(canvas.rotation[1]), [1, 0, 0]); - mat4.multiply(rotationMatrix, elevationRotationMatrix, azimuthRotationMatrix); + if (canvas.twod) { + mat4.rotate(azimuthRotationMatrix, azimuthRotationMatrix, radians(canvas.rotation[0]), [0, 1, 0]); + mat4.rotate(elevationRotationMatrix, elevationRotationMatrix, radians(canvas.rotation[1]), [1, 0, 0]); + mat4.multiply(rotationMatrix, elevationRotationMatrix, azimuthRotationMatrix); + } + else { + mat4.rotate(azimuthRotationMatrix, azimuthRotationMatrix, radians(0), [0, 1, 0]); + mat4.rotate(elevationRotationMatrix, elevationRotationMatrix, radians(90), [1, 0, 0]); + mat4.multiply(rotationMatrix, elevationRotationMatrix, azimuthRotationMatrix); + } //Apply rotation and scaling transform mat4.multiply(vMatrix, rotationMatrix, vMatrix);