Changeset 20770


Ignore:
Timestamp:
06/18/16 16:37:38 (9 years ago)
Author:
dlcheng
Message:

CHG (javascript): Generalizing property recovery function. Property renames. Addressing canvas stretching in 2d orthographic views. Preserving view angles in between perspective changes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/plot/webgl.js

    r20769 r20770  
    5050        canvas.zoomLast = canvas.zoomFactor;
    5151        canvas.cameraMatrix = mat4.create();
    52         canvas.translation = options.getfieldvalue('centeroffset',[0,0,0.0]);
     52        canvas.translation = options.getfieldvalue('origin',[0,0,0.0]);
    5353        canvas.rotationAzimuthBounds = options.getfieldvalue('azlim',[0,360]);
    5454        canvas.rotationElevationBounds = options.getfieldvalue('ellim',[-180,180]);
     
    6161        canvas.movieIncrement = true;
    6262        canvas.moviefps = options.getfieldvalue('moviefps',5);
    63 
    64         if (canvas.twod) {
    65                 canvas.rotationAzimuthBounds = [0,0];
    66                 canvas.rotationElevationBounds = [90,90];
    67                 canvas.rotationDefault = [0,90];
    68                 canvas.rotation = canvas.rotationDefault;
    69         }
    7063       
    7164        // Add event listeners for canvas
     
    396389        var azimuthRotationMatrix = mat4.create();
    397390        var elevationRotationMatrix = mat4.create();
     391        var aspectRatio = canvas.clientWidth / canvas.clientHeight;
    398392
    399393        if (canvas.twod) {
    400                 mat4.ortho(pMatrix, -1/canvas.zoomFactor, 1/canvas.zoomFactor, -1/canvas.zoomFactor, 1/canvas.zoomFactor, -1.0, 10000.0);
     394                mat4.ortho(pMatrix, -1*aspectRatio/canvas.zoomFactor, 1*aspectRatio/canvas.zoomFactor, -1*aspectRatio/canvas.zoomFactor, 1*aspectRatio/canvas.zoomFactor, -1.0, 10000.0);
    401395        }
    402396        else {
    403                 mat4.perspective(pMatrix, 60 * Math.PI / 180, canvas.clientWidth / canvas.clientHeight, 0.001, 10000.0);
     397                mat4.perspective(pMatrix, 60 * Math.PI / 180, aspectRatio, 0.001, 10000.0);
    404398        }
    405399       
     
    409403       
    410404        //Calculate rotation around camera focal point about worldspace origin
    411         mat4.rotate(azimuthRotationMatrix, azimuthRotationMatrix, radians(canvas.rotation[0]), [0, 1, 0]);
    412         mat4.rotate(elevationRotationMatrix, elevationRotationMatrix, radians(canvas.rotation[1]), [1, 0, 0]);
    413         mat4.multiply(rotationMatrix, elevationRotationMatrix, azimuthRotationMatrix);
     405        if (canvas.twod) {
     406                mat4.rotate(azimuthRotationMatrix, azimuthRotationMatrix, radians(canvas.rotation[0]), [0, 1, 0]);
     407                mat4.rotate(elevationRotationMatrix, elevationRotationMatrix, radians(canvas.rotation[1]), [1, 0, 0]);
     408                mat4.multiply(rotationMatrix, elevationRotationMatrix, azimuthRotationMatrix);
     409        }
     410        else {
     411                mat4.rotate(azimuthRotationMatrix, azimuthRotationMatrix, radians(0), [0, 1, 0]);
     412                mat4.rotate(elevationRotationMatrix, elevationRotationMatrix, radians(90), [1, 0, 0]);
     413                mat4.multiply(rotationMatrix, elevationRotationMatrix, azimuthRotationMatrix);
     414        }
    414415       
    415416        //Apply rotation and scaling transform
Note: See TracChangeset for help on using the changeset viewer.