Changeset 20234
- Timestamp:
- 02/24/16 12:30:21 (9 years ago)
- Location:
- issm/trunk-jpl/src/m/plot
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/plot/plot_mesh.js
r20208 r20234 13 13 var ymin,ymax; 14 14 var zmin,zmax; 15 var scale ;15 var scale,zscale,surfacescale; 16 16 17 17 //Process data and model … … 23 23 var is2d = meshresults[4]; 24 24 var isplanet = meshresults[5]; 25 var is3d = md.mesh.classname() == 'mesh3dsurface'; //use meshresults once behvaior can be verified 26 27 if (!is3d && md.geometry.surface) { 28 z = md.geometry.surface; 25 26 if (!md.geometry.surface) { 27 md.geometry.surface=NewArrayFill(md.mesh.x.length,0); 28 } 29 if (md.mesh.classname() == 'mesh3dsurface') { 30 zscale = 1; 31 surfacescale = options.getfieldvalue('heightscale',1); 32 } 33 else { 34 if (md.geometry.surface) { 35 z=md.geometry.surface; 36 } 37 zscale = options.getfieldvalue('heightscale',1); 38 surfacescale = 0; 29 39 } 30 40 //}}} … … 48 58 node["shaderName"] = "colored"; 49 59 node["shader"] = gl["shaders"][node["shaderName"]]["program"]; 50 node["scale"] = [scale, scale, scale *options.getfieldvalue('heightscale',1)];60 node["scale"] = [scale, scale, scale * zscale]; 51 61 node["translation"] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (2 / scale)]; 52 62 node["modelMatrix"] = recalculateModelMatrix(node); … … 72 82 else{ //2D triangular elements 73 83 vertices.itemSize = 3; 84 var xyz = vec3.create(); 85 var direction = vec3.create(); 86 var vertex = vec3.create(); 87 var magnitude; 88 var color = [0.0, 0.0, 0.0, 1.0]; 74 89 for(var i = 0; i < x.length; i++){ 75 vertices[vertices.length] = x[i]; 76 vertices[vertices.length] = y[i]; 77 vertices[vertices.length] = z[i]; 90 xyz = vec3.fromValues(x[i], y[i], z[i]); 91 magnitude = vec3.length(xyz) + md.geometry.surface[i] * surfacescale; 92 vec3.normalize(direction, xyz); 93 vec3.scale(vertex, direction, magnitude); 94 vertices.push.apply(vertices, vertex); 78 95 79 rgbcolor = [0.0, 0.0, 0.0]; 80 colors[colors.length] = rgbcolor[0]; 81 colors[colors.length] = rgbcolor[1]; 82 colors[colors.length] = rgbcolor[2]; 83 colors[colors.length] = 1.0; 96 colors.push.apply(colors, color); 84 97 } 85 98 86 99 //linearize the elements array: 87 100 for(var i = 0; i < elements.length; i++){ 88 //convert tris to line edges; generates more edges than necessary, should optimize using node connectivity 89 //matlab indices from 1, so decrement indices. 90 indices[indices.length] = elements[i][0] - 1; 91 indices[indices.length] = elements[i][1] - 1; 92 indices[indices.length] = elements[i][1] - 1; 93 indices[indices.length] = elements[i][2] - 1; 94 indices[indices.length] = elements[i][2] - 1; 95 indices[indices.length] = elements[i][0] - 1; 101 //convert tris to line edges; generates more edges than necessary, should optimize using node connectivity matlab indices from 1, so decrement indices. 102 indices.push.apply(indices, [elements[i][0] - 1, elements[i][1] - 1, elements[i][1] - 1, elements[i][2] - 1, elements[i][2] - 1, elements[i][0] - 1]); 96 103 } 97 104 indices.itemSize = 1; -
issm/trunk-jpl/src/m/plot/plot_overlay.js
r20208 r20234 15 15 var ymin,ymax; 16 16 var zmin,zmax; 17 var scale,zscale,surfacescale; 17 18 18 19 //Process data and model … … 24 25 var is2d = meshresults[4]; 25 26 var isplanet = meshresults[5]; 26 var is3d = (md.mesh.classname() == 'mesh3dsurface'); //use meshresults once behvaior can be verified 27 28 if (!is3d && md.geometry.surface) { 29 z = md.geometry.surface; 27 28 if (!md.geometry.surface) { 29 md.geometry.surface=NewArrayFill(md.mesh.x.length,0); 30 } 31 if (md.mesh.classname() == 'mesh3dsurface') { 32 zscale = 1; 33 surfacescale = options.getfieldvalue('heightscale',1); 34 } 35 else { 36 if (md.geometry.surface) { 37 z=md.geometry.surface; 38 } 39 zscale = options.getfieldvalue('heightscale',1); 40 surfacescale = 0; 30 41 } 31 42 //}}} … … 46 57 47 58 //Compute scaling: 48 varscale = 1 / (xmax - xmin);59 scale = 1 / (xmax - xmin); 49 60 node["shaderName"] = "unlit_textured"; 50 61 node["shader"] = gl["shaders"][node["shaderName"]]["program"]; 51 node["scale"] = [scale, scale, scale *options.getfieldvalue('heightscale',1)];62 node["scale"] = [scale, scale, scale * zscale]; 52 63 node["translation"] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (2 / scale)]; 53 64 node["modelMatrix"] = recalculateModelMatrix(node); … … 91 102 var xrange = modelxlim[1] - modelxlim[0]; 92 103 var yrange = modelylim[1] - modelylim[0]; 104 105 var xyz = vec3.create(); 106 var direction = vec3.create(); 107 var vertex = vec3.create(); 108 var magnitude; 93 109 94 110 //generate mesh: 111 console.log(md); 95 112 for(var i = 0; i < x.length; i++){ 96 vertices[vertices.length] = x[i]; 97 vertices[vertices.length] = y[i]; 98 vertices[vertices.length] = z[i]; 113 xyz = vec3.fromValues(x[i], y[i], z[i]); 114 magnitude = vec3.length(xyz); 115 vec3.normalize(direction, xyz); 116 vec3.scale(vertex, direction, magnitude); 117 vertices.push.apply(vertices, vertex); 99 118 100 texcoords[texcoords.length] = (x[i] - modelxlim[0]) / xrange; 101 texcoords[texcoords.length] = (y[i] - modelylim[0]) / yrange; 119 texcoords.push.apply(texcoords, [(x[i] - modelxlim[0]) / xrange, (y[i] - modelylim[0]) / yrange]); 102 120 } 103 121 -
issm/trunk-jpl/src/m/plot/plot_unit.js
r20208 r20234 16 16 var zmin,zmax; 17 17 var datamin,datamax,datadelta; 18 var scale ;18 var scale,zscale,surfacescale; 19 19 20 20 //Process data and model … … 26 26 var is2d = meshresults[4]; 27 27 var isplanet = meshresults[5]; 28 var is3d = md.mesh.classname() == 'mesh3dsurface'; //use meshresults once behvaior can be verified29 28 30 29 var dataresults = processdata(md,data,options); 31 30 var data2 = dataresults[0]; 32 31 var datatype = dataresults[1]; 33 34 if (!is3d && md.geometry.surface) { 35 z = md.geometry.surface; 32 33 if (!md.geometry.surface) { 34 md.geometry.surface=NewArrayFill(md.mesh.x.length,0); 35 } 36 if (md.mesh.classname() == 'mesh3dsurface') { 37 zscale = 1; 38 surfacescale = options.getfieldvalue('heightscale',1); 39 } 40 else { 41 if (md.geometry.surface) { 42 z=md.geometry.surface; 43 } 44 zscale = options.getfieldvalue('heightscale',1); 45 surfacescale = 0; 36 46 } 37 47 //}}} … … 51 61 zmax = zlim[1]; 52 62 var caxis; 53 63 54 64 //Compute scaling: 55 varscale = 1 / (xmax - xmin);65 scale = 1 / (xmax - xmin); 56 66 node["shaderName"] = "unlit_textured"; 57 67 node["shader"] = gl["shaders"][node["shaderName"]]["program"]; 58 node["scale"] = [scale, scale, scale *options.getfieldvalue('heightscale',1)];68 node["scale"] = [scale, scale, scale * zscale]; 59 69 node["translation"] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (2 / scale)]; 60 70 node["modelMatrix"] = recalculateModelMatrix(node); … … 93 103 vertices.itemSize = 3; 94 104 texcoords.itemSize = 2; 95 //var height = vec3.create(); 96 //var heightscale = options.getfieldvalue('heightscale',1); 105 106 var xyz = vec3.create(); 107 var direction = vec3.create(); 108 var vertex = vec3.create(); 109 var magnitude; 110 97 111 for(var i = 0; i < x.length; i++){ 98 //vec3.normalize(height, vec3.fromValues(x[i], y[i], z[i])); //fix to use normalized earth radius instead of radius+ height 99 //vec3.scale(height, height, heightscale); 100 vertices[vertices.length] = x[i]; 101 vertices[vertices.length] = y[i]; 102 vertices[vertices.length] = z[i]; 103 104 texcoords[texcoords.length] = 0.5; 105 texcoords[texcoords.length] = (data[i] - datamin) / datadelta; 112 xyz = vec3.fromValues(x[i], y[i], z[i]); 113 magnitude = vec3.length(xyz) + md.geometry.surface[i] * surfacescale; 114 vec3.normalize(direction, xyz); 115 vec3.scale(vertex, direction, magnitude); 116 vertices.push.apply(vertices, vertex); 117 118 texcoords.push.apply(texcoords, [0.5, (data[i] - datamin) / datadelta]); 106 119 } 107 120 … … 135 148 else{ //triangular elements 136 149 vertices.itemSize = 3; 150 151 var xyz = vec3.create(); 152 var direction = vec3.create(); 153 var vertex = vec3.create(); 154 var magnitude; 155 137 156 for(var i = 0; i < x.length; i++){ 138 vertices[vertices.length] = x[i]; 139 vertices[vertices.length] = y[i]; 140 vertices[vertices.length] = z[i]; 157 xyz = vec3.fromValues(x[i], y[i], z[i]); 158 magnitude = vec3.length(xyz) + md.geometry.surface[i] * surfacescale; 159 vec3.normalize(direction, xyz); 160 vec3.scale(vertex, direction, magnitude); 161 vertices.push.apply(vertices, vertex); 141 162 } 142 163 … … 164 185 texcoords[i].itemSize = 2; 165 186 for(var j = 0; j < x.length; j++){ 166 texcoords[i][texcoords[i].length] = 0.5; 167 texcoords[i][texcoords[i].length] = (data[i][j] - datamin) / datadelta; 187 texcoords.push.apply(texcoords, [0.5, (data[i][j] - datamin) / datadelta]); 168 188 } 169 189 }
Note:
See TracChangeset
for help on using the changeset viewer.