Index: ../trunk-jpl/src/m/plot/plot_unit.js =================================================================== --- ../trunk-jpl/src/m/plot/plot_unit.js (revision 20564) +++ ../trunk-jpl/src/m/plot/plot_unit.js (revision 20565) @@ -15,7 +15,7 @@ var ymin,ymax; var zmin,zmax; var datamin,datamax,datadelta; - var scale,zscale,surfacescale; + var scale,matrixscale,vertexscale; //Process data and model var meshresults = processmesh(md,data,options); @@ -30,19 +30,20 @@ var data2 = dataresults[0]; var datatype = dataresults[1]; + //Compue scaling through matrices for 2d meshes and vertices for 3d meshes if (!md.geometry.surface) { md.geometry.surface=NewArrayFill(md.mesh.x.length,0); } if (md.mesh.classname() == 'mesh3dsurface') { - zscale = 1; - surfacescale = options.getfieldvalue('heightscale',1); + matrixscale = 1; + vertexscale = options.getfieldvalue('heightscale',1); } else { if (md.geometry.surface) { z=md.geometry.surface; } - zscale = options.getfieldvalue('heightscale',1); - surfacescale = 0; + matrixscale = options.getfieldvalue('heightscale',1); + vertexscale = 0; } //}}} @@ -61,11 +62,11 @@ zmax = zlim[1]; var caxis; - //Compute scaling: + //Compute gl variables: scale = 1 / (xmax - xmin); node["shaderName"] = "unlit_textured"; node["shader"] = gl["shaders"][node["shaderName"]]["program"]; - node["scale"] = [scale, scale, scale * zscale]; + node["scale"] = [scale, scale, scale * matrixscale]; node["translation"] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (2 / scale)]; node["modelMatrix"] = recalculateModelMatrix(node); node["alpha"] = options.getfieldvalue('alpha',1.0); @@ -119,7 +120,7 @@ } //Scale vertices xyz = vec3.fromValues(x[i], y[i], z[i]); - magnitude = vec3.length(xyz) + md.geometry.surface[i] * surfacescale; + magnitude = vec3.length(xyz) + md.geometry.surface[i] * vertexscale; vec3.normalize(direction, xyz); vec3.scale(vertex, direction, magnitude); vertices[vertices.length] = vertex[0]; @@ -182,7 +183,7 @@ } //Scale vertices xyz = vec3.fromValues(x[i], y[i], z[i]); - magnitude = vec3.length(xyz) + md.geometry.surface[i] * surfacescale; + magnitude = vec3.length(xyz) + md.geometry.surface[i] * vertexscale; vec3.normalize(direction, xyz); vec3.scale(vertex, direction, magnitude); vertices[vertices.length] = vertex[0]; Index: ../trunk-jpl/src/m/plot/plot_quiver.js =================================================================== --- ../trunk-jpl/src/m/plot/plot_quiver.js (revision 20564) +++ ../trunk-jpl/src/m/plot/plot_quiver.js (revision 20565) @@ -13,7 +13,7 @@ var xmin,xmax; var ymin,ymax; var zmin,zmax; - var scale,zscale,surfacescale; + var scale,matrixscale,vertexscale; //Process data and model var meshresults = processmesh(md,[],options); @@ -26,19 +26,20 @@ var vx = md.initialization.vx; var vy = md.initialization.vy; + //Compue scaling through matrices for 2d meshes and vertices for 3d meshes if (!md.geometry.surface) { md.geometry.surface=NewArrayFill(md.mesh.x.length,0); } if (md.mesh.classname() == 'mesh3dsurface') { - zscale = 1; - surfacescale = options.getfieldvalue('heightscale',1); + matrixscale = 1; + vertexscale = options.getfieldvalue('heightscale',1); } else { if (md.geometry.surface) { z=md.geometry.surface; } - zscale = options.getfieldvalue('heightscale',1); - surfacescale = 0; + matrixscale = options.getfieldvalue('heightscale',1); + vertexscale = 0; } //}}} @@ -56,11 +57,11 @@ zmin = zlim[0]; zmax = zlim[1]; - //Compute scaling: + //Compute gl variables: var scale = 1 / (xmax - xmin); node["shaderName"] = "colored"; node["shader"] = gl["shaders"][node["shaderName"]]["program"]; - node["scale"] = [scale, scale, scale * zscale]; + node["scale"] = [scale, scale, scale * matrixscale]; node["translation"] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (2 / scale)]; node["modelMatrix"] = recalculateModelMatrix(node); node["drawMode"] = gl.LINES; @@ -95,7 +96,7 @@ if (isNaN(x[i]) || isNaN(y[i]) || isNaN(z[i])) continue; //Scale vertices xyz1 = vec3.fromValues(x[i], y[i], z[i]); - magnitude = vec3.length(xyz1) + md.geometry.surface[i] * surfacescale; + magnitude = vec3.length(xyz1) + md.geometry.surface[i] * vertexscale; vec3.normalize(direction, xyz1); vec3.scale(vertex, direction, magnitude); vertices[vertices.length] = vertex[0]; Index: ../trunk-jpl/src/m/plot/plot_overlay.js =================================================================== --- ../trunk-jpl/src/m/plot/plot_overlay.js (revision 20564) +++ ../trunk-jpl/src/m/plot/plot_overlay.js (revision 20565) @@ -15,7 +15,7 @@ var xmin,xmax; var ymin,ymax; var zmin,zmax; - var scale,zscale,surfacescale; + var scale,matrixscale,vertexscale; //Process data and model var meshresults = processmesh(md,data,options); @@ -26,19 +26,20 @@ var is2d = meshresults[4]; var isplanet = meshresults[5]; + //Compue scaling through matrices for 2d meshes and vertices for 3d meshes if (!md.geometry.surface) { md.geometry.surface=NewArrayFill(md.mesh.x.length,0); } if (md.mesh.classname() == 'mesh3dsurface') { - zscale = 1; - surfacescale = options.getfieldvalue('heightscale',1); + matrixscale = 1; + vertexscale = options.getfieldvalue('heightscale',1); } else { if (md.geometry.surface) { z=md.geometry.surface; } - zscale = options.getfieldvalue('heightscale',1); - surfacescale = 0; + matrixscale = options.getfieldvalue('heightscale',1); + vertexscale = 0; } //}}} @@ -56,11 +57,11 @@ zmin = zlim[0]; zmax = zlim[1]; - //Compute scaling: + //Compute gl variables: scale = 1 / (xmax - xmin); node["shaderName"] = "unlit_textured"; node["shader"] = gl["shaders"][node["shaderName"]]["program"]; - node["scale"] = [scale, scale, scale * zscale]; + node["scale"] = [scale, scale, scale * matrixscale]; node["translation"] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (2 / scale)]; node["modelMatrix"] = recalculateModelMatrix(node); node["texture"] = initTexture(gl,options.getfieldvalue('image')); @@ -117,20 +118,30 @@ vertices[vertices.length] = vertex[2]; continue; } - //Scale vertices - xyz = vec3.fromValues(x[i], y[i], z[i]); - magnitude = vec3.length(xyz); - vec3.normalize(direction, xyz); - vec3.scale(vertex, direction, magnitude); - vertices[vertices.length] = vertex[0]; - vertices[vertices.length] = vertex[1]; - vertices[vertices.length] = vertex[2]; - + if (md.mesh.classname() == 'mesh3dsurface') { - texcoords[texcoords.length] = degrees(Math.atan2(y[i], x[i])) / 360 + 0.5; - texcoords[texcoords.length] = degrees(Math.asin(z[i] / magnitude)) / 180 + 0.5; + //Scale vertices + xyz = vec3.fromValues(x[i], y[i], z[i]); + magnitude = vec3.length(xyz) + md.geometry.surface[i] * vertexscale; + vec3.normalize(direction, xyz); + vec3.scale(vertex, direction, magnitude); + vertices[vertices.length] = vertex[0]; + vertices[vertices.length] = vertex[1]; + vertices[vertices.length] = vertex[2]; + + texcoords[texcoords.length] = degrees(Math.atan2(vertex[1], vertex[0])) / 360 + 0.5; + texcoords[texcoords.length] = degrees(Math.asin(vertex[2] / magnitude)) / 180 + 0.5; } else { + //Scale vertices + xyz = vec3.fromValues(x[i], y[i], z[i]); + magnitude = vec3.length(xyz); + vec3.normalize(direction, xyz); + vec3.scale(vertex, direction, magnitude); + vertices[vertices.length] = vertex[0]; + vertices[vertices.length] = vertex[1]; + vertices[vertices.length] = vertex[2]; + texcoords[texcoords.length] = (x[i] - modelxlim[0]) / xrange; texcoords[texcoords.length] = (y[i] - modelylim[0]) / yrange; } Index: ../trunk-jpl/src/m/plot/plot_mesh.js =================================================================== --- ../trunk-jpl/src/m/plot/plot_mesh.js (revision 20564) +++ ../trunk-jpl/src/m/plot/plot_mesh.js (revision 20565) @@ -12,7 +12,7 @@ var xmin,xmax; var ymin,ymax; var zmin,zmax; - var scale,zscale,surfacescale; + var scale,matrixscale,vertexscale; //Process data and model var meshresults = processmesh(md,[],options); @@ -23,19 +23,20 @@ var is2d = meshresults[4]; var isplanet = meshresults[5]; + //Compue scaling through matrices for 2d meshes and vertices for 3d meshes if (!md.geometry.surface) { md.geometry.surface=NewArrayFill(md.mesh.x.length,0); } if (md.mesh.classname() == 'mesh3dsurface') { - zscale = 1; - surfacescale = options.getfieldvalue('heightscale',1); + matrixscale = 1; + vertexscale = options.getfieldvalue('heightscale',1); } else { if (md.geometry.surface) { z=md.geometry.surface; } - zscale = options.getfieldvalue('heightscale',1); - surfacescale = 0; + matrixscale = options.getfieldvalue('heightscale',1); + vertexscale = 0; } //}}} @@ -53,11 +54,11 @@ zmin = zlim[0]; zmax = zlim[1]; - //Compute scaling: + //Compute gl variables: var scale = 1 / (xmax - xmin); node["shaderName"] = "colored"; node["shader"] = gl["shaders"][node["shaderName"]]["program"]; - node["scale"] = [scale, scale, scale * zscale]; + node["scale"] = [scale, scale, scale * matrixscale]; node["translation"] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (2 / scale)]; node["modelMatrix"] = recalculateModelMatrix(node); node["drawMode"] = gl.LINES; @@ -96,7 +97,7 @@ } //Scale vertices xyz = vec3.fromValues(x[i], y[i], z[i]); - magnitude = vec3.length(xyz) + md.geometry.surface[i] * surfacescale; + magnitude = vec3.length(xyz) + md.geometry.surface[i] * vertexscale; vec3.normalize(direction, xyz); vec3.scale(vertex, direction, magnitude); vertices[vertices.length] = vertex[0];