Changeset 19888
- Timestamp:
- 12/13/15 00:11:01 (9 years ago)
- Location:
- issm/trunk-jpl/src/m/plot
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/plot/plot_unit.js
r19886 r19888 58 58 node["overlay"] = options.getfieldvalue('overlay','off') == 'on'; 59 59 node["drawOrder"] = 0; 60 60 console.log(data,datatype); 61 61 switch(datatype){ 62 62 … … 107 107 patch( 'Faces',[C A D],'Vertices', [x y z],'FaceVertexCData',data(:),'FaceColor','interp','EdgeColor',edgecolor);*/ 108 108 } 109 else{ //triangular elements 110 109 else{ //triangular elements 110 caxis = options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]); 111 datamin = caxis[0]; 112 datamax = caxis[1]; 113 datadelta = datamax - datamin; 114 111 115 vertices.itemSize = 3; 112 var cmap=options.getfieldvalue('cmap','jet'); 113 //If handling movie data, compute vertices once and texcoords for each movie frame 114 if (data[0] instanceof Float64Array) { 115 for(var i = 0; i < x.length; i++){ 116 vertices[vertices.length] = x[i]; 117 vertices[vertices.length] = y[i]; 118 vertices[vertices.length] = z[i]; 119 } 120 //Transpose data to obtain column addressable data matrix 121 data = data[0].map(function(col, i) { 122 return data.map(function(row) { 123 return row[i] 124 }) 125 }); 126 for(var i = 0; i < data.length-1; i++){ 127 //Prevent evaluation of datasubarray min/max if caxis exists 128 if (options.exist('caxis')) { 129 caxis = options.getfieldvalue('caxis'); 130 } 131 else { 132 caxis = [ArrayMin(data[i]),ArrayMax(data[i])]; 133 } 134 datamin = caxis[0]; 135 datamax = caxis[1]; 136 datadelta = datamax - datamin; 137 138 //Precalculate arrays for each datasubarray 139 texcoords[i] = []; 140 texcoords[i].itemSize = 2; 141 for(var j = 0; j < x.length; j++){ 142 texcoords[i][texcoords[i].length] = 0.5; 143 texcoords[i][texcoords[i].length] = (data[i][j] - datamin) / datadelta; 144 } 145 } 146 147 //Initialize movie loop 148 node["movieInterval"] = 1000 / options.getfieldvalue('moviefps',5); 149 node["movieLength"] = data[0].length; 150 node["movieFrame"] = 0; 151 node["movieHandler"] = function () { 152 node["movieFrame"] = (node["movieFrame"] + 1) % (node["movieLength"]-1); 153 var array = [node["arrays"][0],node["arrays"][1][node["movieFrame"]],node["arrays"][2]]; 154 node["buffers"] = initBuffers(gl,array); 155 if (true) { 156 setTimeout(node["movieHandler"], node["movieInterval"]); 157 } 158 }; 159 setTimeout(node["movieHandler"], node["movieInterval"]); 160 } 161 else { 162 caxis = options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]); 163 datamin = caxis[0]; 164 datamax = caxis[1]; 165 datadelta = datamax - datamin; 166 texcoords.itemSize = 2; 167 for(var i = 0; i < x.length; i++){ 168 vertices[vertices.length] = x[i]; 169 vertices[vertices.length] = y[i]; 170 vertices[vertices.length] = z[i]; 171 172 texcoords[texcoords.length] = 0.5; 173 texcoords[texcoords.length] = (data[i] - datamin) / datadelta; 174 } 116 texcoords.itemSize = 2; 117 for(var i = 0; i < x.length; i++){ 118 vertices[vertices.length] = x[i]; 119 vertices[vertices.length] = y[i]; 120 vertices[vertices.length] = z[i]; 121 122 texcoords[texcoords.length] = 0.5; 123 texcoords[texcoords.length] = (data[i] - datamin) / datadelta; 175 124 } 176 125 … … 181 130 182 131 } 132 //Initalize buffers 133 node["arrays"] = [vertices, texcoords, indices]; 134 node["buffers"] = initBuffers(gl,node["arrays"]); 183 135 break; 184 136 //}}} … … 192 144 //plot_quiver3(x,y,z,data(:,1),data(:,2),data(:,3),options); 193 145 } 194 195 //}}} 146 break; 147 148 //}}} 149 //node transient plot {{{ 150 case 5: 151 if (elements[0].length==6){ //prisms 152 } 153 else if (elements[0].length==4){//tetras 154 } 155 else{ //triangular elements 156 vertices.itemSize = 3; 157 for(var i = 0; i < x.length; i++){ 158 vertices[vertices.length] = x[i]; 159 vertices[vertices.length] = y[i]; 160 vertices[vertices.length] = z[i]; 161 } 162 163 //Transpose data to obtain column addressable data matrix 164 data = data[0].map(function(col, i) { 165 return data.map(function(row) { 166 return row[i] 167 }) 168 }); 169 170 for(var i = 0; i < data.length-1; i++){ 171 //Prevent evaluation of datasubarray min/max if caxis exists 172 if (options.exist('caxis')) { 173 caxis = options.getfieldvalue('caxis'); 174 } 175 else { 176 caxis = [ArrayMin(data[i]),ArrayMax(data[i].slice(0,-1))]; 177 } 178 datamin = caxis[0]; 179 datamax = caxis[1]; 180 datadelta = datamax - datamin; 181 182 //Precalculate arrays for each datasubarray 183 texcoords[i] = []; 184 texcoords[i].itemSize = 2; 185 for(var j = 0; j < x.length; j++){ 186 texcoords[i][texcoords[i].length] = 0.5; 187 texcoords[i][texcoords[i].length] = (data[i][j] - datamin) / datadelta; 188 } 189 } 190 console.log(texcoords); 191 192 //linearize the elements array: 193 indices = indices.concat.apply(indices, elements); 194 indices.itemSize = 1; 195 for(var i=0;i<indices.length;i++)indices[i]--; //matlab indices from 1, so decrement. 196 197 //Initialize movie loop 198 node["movieInterval"] = 1000 / options.getfieldvalue('moviefps',5); 199 node["movieLength"] = data.length-1; 200 node["movieFrame"] = 0; 201 node["movieHandler"] = function () { 202 node["movieFrame"] = (node["movieFrame"] + 1) % (node["movieLength"]); 203 console.log(node["movieFrame"]); 204 var array = [node["arrays"][0],node["arrays"][1][node["movieFrame"]],node["arrays"][2]]; 205 node["buffers"] = initBuffers(gl,array); 206 setTimeout(node["movieHandler"], node["movieInterval"]); 207 }; 208 setTimeout(node["movieHandler"], node["movieInterval"]); 209 } 210 211 //Initalize buffers 212 node["arrays"] = [vertices, texcoords, indices]; 213 node["buffers"] = initBuffers(gl,[node["arrays"][0],node["arrays"][1][0],node["arrays"][2]]); 214 break; 215 //}}} 216 196 217 default: 197 218 throw Error(sprintf("%s%i%s\n",'case ',datatype,' not supported')); 198 219 } 199 200 /*Initalize buffers: */201 if (data[0] instanceof Float64Array) {202 node["arrays"] = [vertices, texcoords, indices];203 node["buffers"] = initBuffers(gl,[node["arrays"][0],node["arrays"][1][0],node["arrays"][2]]);204 }205 else {206 node["arrays"] = [vertices, texcoords, indices];207 node["buffers"] = initBuffers(gl,node["arrays"]);208 }209 220 } -
issm/trunk-jpl/src/m/plot/processdata.js
r19826 r19888 6 6 // datatype = 3 -> node quivers 7 7 // datatype = 4 -> patch 8 // datatype = 5 -> nodes transient 8 9 // 9 10 // Usage: … … 60 61 throw Error('plotmodel error message: data not supported yet'); 61 62 } 63 62 64 63 65 //quiver? … … 194 196 } 195 197 } 198 199 //node transient data 200 if (datasize==md.mesh.numberofvertices+1){ 201 datatype=5; 202 } 203 196 204 197 205 //layer projection?
Note:
See TracChangeset
for help on using the changeset viewer.