| 1 | function export_gl(md,varargin)
|
|---|
| 2 |
|
|---|
| 3 | templist=plotoptions(varargin{:});
|
|---|
| 4 | optionslist=templist.list;
|
|---|
| 5 | options=optionslist{1};
|
|---|
| 6 | options=checkplotoptions(md,options);
|
|---|
| 7 |
|
|---|
| 8 | %Setup unique directory in present dir:
|
|---|
| 9 | directory=getfieldvalue(options,'directory','./');
|
|---|
| 10 | databasename=getfieldvalue(options,'database','webgl');
|
|---|
| 11 |
|
|---|
| 12 | %scaling factor:
|
|---|
| 13 | scaling_factor=getfieldvalue(options,'scaling_factor',50);
|
|---|
| 14 |
|
|---|
| 15 | %Deal with title:
|
|---|
| 16 | if exist(options,'title')
|
|---|
| 17 | title=getfieldvalue(options,'title');
|
|---|
| 18 | else
|
|---|
| 19 | title='';
|
|---|
| 20 | end
|
|---|
| 21 |
|
|---|
| 22 | %initialize model:
|
|---|
| 23 | model.title=title;
|
|---|
| 24 | model.initialZoomFactor=getfieldvalue(options,'zoom',-.25);
|
|---|
| 25 |
|
|---|
| 26 | %Deal with contour {{{
|
|---|
| 27 |
|
|---|
| 28 | contour_lat=md.mesh.lat(md.mesh.segments(:,1));
|
|---|
| 29 | contour_long=md.mesh.long(md.mesh.segments(:,1));
|
|---|
| 30 | contour_surface=md.geometry.surface(md.mesh.segments(:,1));
|
|---|
| 31 |
|
|---|
| 32 | R=6371000*ones(length(contour_surface),1)+scaling_factor*contour_surface;
|
|---|
| 33 |
|
|---|
| 34 | contourx = R .* cosd(contour_lat) .* cosd(contour_long);
|
|---|
| 35 | contoury = R .* cosd(contour_lat) .* sind(contour_long);
|
|---|
| 36 | contourz = R .* sind(contour_lat);
|
|---|
| 37 |
|
|---|
| 38 | model.contourx=contourx;
|
|---|
| 39 | model.contoury=contoury;
|
|---|
| 40 | model.contourz=contourz;
|
|---|
| 41 |
|
|---|
| 42 | %}}}
|
|---|
| 43 | %Deal with mesh and results {{{
|
|---|
| 44 |
|
|---|
| 45 |
|
|---|
| 46 | lat=md.mesh.lat;
|
|---|
| 47 | long=md.mesh.long;
|
|---|
| 48 | surface=md.geometry.surface;
|
|---|
| 49 | numberofelements=md.mesh.numberofelements;
|
|---|
| 50 | numberofvertices=md.mesh.numberofvertices;
|
|---|
| 51 |
|
|---|
| 52 | R=6371000*ones(numberofvertices,1)+scaling_factor*surface;
|
|---|
| 53 |
|
|---|
| 54 | x = R .* cosd(lat) .* cosd(long);
|
|---|
| 55 | y = R .* cosd(lat) .* sind(long);
|
|---|
| 56 | z = R .* sind(lat);
|
|---|
| 57 |
|
|---|
| 58 |
|
|---|
| 59 | %Deal with triangulation:
|
|---|
| 60 | model.index=md.mesh.elements;
|
|---|
| 61 | model.x=x;
|
|---|
| 62 | model.y=y;
|
|---|
| 63 | model.z=z;
|
|---|
| 64 | model.surface=surface;
|
|---|
| 65 |
|
|---|
| 66 | %Deal with data:
|
|---|
| 67 | results=struct([]);
|
|---|
| 68 | for i=1:length(optionslist),
|
|---|
| 69 | options=optionslist{i}; options=checkplotoptions(md,options);
|
|---|
| 70 | data=getfieldvalue(options,'data');
|
|---|
| 71 | results(i).data=data;
|
|---|
| 72 | results(i).caxis=getfieldvalue(options,'caxis',[min(data(:)) max(data(:))]);
|
|---|
| 73 |
|
|---|
| 74 | label=getfieldvalue(options,'label','');
|
|---|
| 75 | if strcmpi(label,''),
|
|---|
| 76 | %create generic label:
|
|---|
| 77 | label=['data' num2str(i)];
|
|---|
| 78 | end
|
|---|
| 79 | results(i).label=label;
|
|---|
| 80 |
|
|---|
| 81 | shortlabel=getfieldvalue(options,'shortlabel','');
|
|---|
| 82 | if strcmpi(shortlabel,''),
|
|---|
| 83 | %create generic short label:
|
|---|
| 84 | shortlabel=['data' num2str(i)];
|
|---|
| 85 | end
|
|---|
| 86 | results(i).shortlabel=shortlabel;
|
|---|
| 87 |
|
|---|
| 88 | if size(data,2)>1,
|
|---|
| 89 | time_range=getfieldvalue(options,'time_range',[0 100]);
|
|---|
| 90 | results(i).time_range=time_range;
|
|---|
| 91 | end
|
|---|
| 92 |
|
|---|
| 93 | unit=getfieldvalue(options,'unit','');
|
|---|
| 94 | if strcmpi(unit,''),
|
|---|
| 95 | %create generic unit:
|
|---|
| 96 | unit='SI';
|
|---|
| 97 | end
|
|---|
| 98 | results(i).unit=unit;
|
|---|
| 99 | end
|
|---|
| 100 | model.results=results;
|
|---|
| 101 |
|
|---|
| 102 | %Write model to javascript database file:
|
|---|
| 103 | writejsfile([directory databasename '.js'],model,databasename);
|
|---|
| 104 | %}}}
|
|---|