|
16 | 16 | %-SCENE DATA-%
|
17 | 17 | eval( sprintf('scene = obj.layout.scene%d;', xsource) );
|
18 | 18 |
|
| 19 | +%-GET CONTOUR INDEX-% |
| 20 | +obj.PlotOptions.nPlots = obj.PlotOptions.nPlots + 1; |
| 21 | +contourIndex = obj.PlotOptions.nPlots; |
| 22 | + |
19 | 23 | %-------------------------------------------------------------------------%
|
20 | 24 |
|
21 | 25 | %-associate scene-%
|
22 | 26 | obj.data{surfaceIndex}.scene = sprintf('scene%d', xsource);
|
| 27 | +obj.data{contourIndex}.scene = sprintf('scene%d', xsource); |
23 | 28 |
|
24 | 29 | %-------------------------------------------------------------------------%
|
25 | 30 |
|
26 |
| -%-surface xaxis-% |
27 |
| -obj.data{surfaceIndex}.xaxis = ['x' num2str(xsource)]; |
28 |
| - |
29 |
| -%-------------------------------------------------------------------------% |
| 31 | +%-surface type for face color-% |
| 32 | +obj.data{surfaceIndex}.type = 'surface'; |
30 | 33 |
|
31 |
| -%-surface type-% |
32 |
| -obj.data{surfaceIndex}.type = 'scatter3d'; |
33 |
| -obj.data{surfaceIndex}.mode = 'lines'; |
| 34 | +%-scatter3d type for contour mesh lines-% |
| 35 | +obj.data{contourIndex}.type = 'scatter3d'; |
| 36 | +obj.data{contourIndex}.mode = 'lines'; |
34 | 37 |
|
35 | 38 | %-------------------------------------------------------------------------%
|
36 | 39 |
|
|
41 | 44 | zData = meshData.ZData(1:meshDensity^2);
|
42 | 45 |
|
43 | 46 | %-reformat data to mesh-%
|
44 |
| -xData = reshape(xData, [meshDensity, meshDensity])'; |
45 |
| -yData = reshape(yData, [meshDensity, meshDensity])'; |
46 |
| -zData = reshape(zData, [meshDensity, meshDensity])'; |
| 47 | +xDataSurface = reshape(xData, [meshDensity, meshDensity])'; |
| 48 | +yDataSurface = reshape(yData, [meshDensity, meshDensity])'; |
| 49 | +zDataSurface = reshape(zData, [meshDensity, meshDensity])'; |
47 | 50 |
|
48 |
| -xData = [xData; NaN(1, size(xData, 2))]; |
49 |
| -yData = [yData; NaN(1, size(yData, 2))]; |
50 |
| -zData = [zData; NaN(1, size(zData, 2))]; |
| 51 | +xDataContour = [xDataSurface; NaN(1, size(xDataSurface, 2))]; |
| 52 | +yDataContour = [yDataSurface; NaN(1, size(yDataSurface, 2))]; |
| 53 | +zDataContour = [zDataSurface; NaN(1, size(zDataSurface, 2))]; |
51 | 54 |
|
52 |
| -xData = [xData; xData(1:end-1,:)']; |
53 |
| -yData = [yData; yData(1:end-1,:)']; |
54 |
| -zData = [zData; zData(1:end-1,:)']; |
| 55 | +xDataContour = [xDataContour; xDataContour(1:end-1,:)']; |
| 56 | +yDataContour = [yDataContour; yDataContour(1:end-1,:)']; |
| 57 | +zDataContour = [zDataContour; zDataContour(1:end-1,:)']; |
55 | 58 |
|
56 |
| -xData = [xData; NaN(1, size(xData, 2))]; |
57 |
| -yData = [yData; NaN(1, size(yData, 2))]; |
58 |
| -zData = [zData; NaN(1, size(zData, 2))]; |
| 59 | +xDataContour = [xDataContour; NaN(1, size(xDataContour, 2))]; |
| 60 | +yDataContour = [yDataContour; NaN(1, size(yDataContour, 2))]; |
| 61 | +zDataContour = [zDataContour; NaN(1, size(zDataContour, 2))]; |
59 | 62 |
|
60 |
| -xData = [xData(1, :)-0.01; xData]; |
61 |
| -yData = [yData(1, :)-0.01; yData]; |
62 |
| -zData = [NaN(1, size(zData, 2)); zData]; |
| 63 | +%-------------------------------------------------------------------------% |
63 | 64 |
|
64 |
| -xData = [xData(:, 1)-0.01, xData]; |
65 |
| -yData = [yData(:, 1)-0.01, yData]; |
66 |
| -zData = [NaN(size(zData, 1), 1), zData]; |
| 65 | +%-set data on surface-% |
| 66 | +obj.data{surfaceIndex}.x = xDataSurface; |
| 67 | +obj.data{surfaceIndex}.y = yDataSurface; |
| 68 | +obj.data{surfaceIndex}.z = zDataSurface; |
67 | 69 |
|
68 | 70 | %-------------------------------------------------------------------------%
|
69 | 71 |
|
70 |
| -%-set data-% |
71 |
| -obj.data{surfaceIndex}.x = xData(:); |
72 |
| -obj.data{surfaceIndex}.y = yData(:); |
73 |
| -obj.data{surfaceIndex}.z = zData(:); |
| 72 | +%-set data on scatter3d-% |
| 73 | +obj.data{contourIndex}.x = xDataContour(:); |
| 74 | +obj.data{contourIndex}.y = yDataContour(:); |
| 75 | +obj.data{contourIndex}.z = zDataContour(:); |
74 | 76 |
|
75 | 77 | %-------------------------------------------------------------------------%
|
76 | 78 |
|
|
91 | 93 |
|
92 | 94 | %-get edge color-%
|
93 | 95 | if isnumeric(meshData.EdgeColor)
|
94 |
| - cData = sprintf('rgb(%f,%f,%f)', 255*meshData.EdgeColor); |
| 96 | + cDataContour = sprintf('rgb(%f,%f,%f)', 255*meshData.EdgeColor); |
95 | 97 |
|
96 | 98 | elseif strcmpi(meshData.EdgeColor, 'interp')
|
97 |
| - cData = zData(:); |
98 |
| - obj.data{surfaceIndex}.line.colorscale = colorScale; |
| 99 | + cDataContour = zDataContour(:); |
| 100 | + obj.data{contourIndex}.line.colorscale = colorScale; |
99 | 101 | end
|
100 | 102 |
|
101 | 103 | %-set edge color-%
|
102 |
| -obj.data{surfaceIndex}.line.color = cData; |
| 104 | +obj.data{contourIndex}.line.color = cDataContour; |
103 | 105 |
|
104 | 106 | %-------------------------------------------------------------------------%
|
105 | 107 |
|
106 | 108 | %-get face color-%
|
107 | 109 | if isnumeric(meshData.FaceColor)
|
108 |
| - cData = sprintf('rgba(%f,%f,%f,0.99)', 255*meshData.FaceColor); |
109 | 110 |
|
110 |
| -elseif strcmpi(meshData.EdgeColor, 'interp') |
111 |
| - cData = zData(:); |
112 |
| - obj.data{surfaceIndex}.colorscale = colorScale; |
| 111 | + for n = 1:size(zDataSurface, 2) |
| 112 | + for m = 1:size(zDataSurface, 1) |
| 113 | + cDataSurface(m, n, :) = meshData.FaceColor; |
| 114 | + end |
| 115 | + end |
| 116 | + |
| 117 | + [cDataSurface, cMapSurface] = rgb2ind(cDataSurface, 256); |
| 118 | + |
| 119 | + for c = 1: size(cMapSurface, 1) |
| 120 | + colorScale{c} = { (c-1)*fac , sprintf('rgba(%f,%f,%f, 1)', cMapSurface(c, :))}; |
| 121 | + end |
| 122 | + |
| 123 | + obj.data{surfaceIndex}.cmin = 0; |
| 124 | + obj.data{surfaceIndex}.cmax = 255; |
| 125 | + |
| 126 | +elseif strcmpi(meshData.FaseColor, 'interp') |
| 127 | + cDataSurface = zDataSurface; |
113 | 128 | end
|
114 | 129 |
|
115 | 130 | %-set face color-%
|
116 |
| -obj.data{surfaceIndex}.surfacecolor = cData; |
117 |
| -obj.data{surfaceIndex}.surfaceaxis = 2; |
| 131 | +obj.data{surfaceIndex}.colorscale = colorScale; |
| 132 | +obj.data{surfaceIndex}.surfacecolor = cDataSurface; |
| 133 | + |
| 134 | +%-lighting settings-% |
| 135 | +obj.data{surfaceIndex}.lighting.diffuse = 0.5;%0.5; |
| 136 | +obj.data{surfaceIndex}.lighting.ambient = 0.725 + (1-meshData.FaceAlpha);%0.7; |
| 137 | + |
| 138 | +%-opacity-% |
| 139 | +obj.data{surfaceIndex}.opacity = meshData.FaceAlpha; |
118 | 140 |
|
119 | 141 | %-------------------------------------------------------------------------%
|
120 | 142 |
|
121 | 143 | %-line style-%
|
122 | 144 |
|
123 |
| -obj.data{surfaceIndex}.line.width = 3*meshData.LineWidth; |
| 145 | +obj.data{contourIndex}.line.width = 3*meshData.LineWidth; |
124 | 146 |
|
125 | 147 | switch meshData.LineStyle
|
126 | 148 | case '-'
|
127 |
| - obj.data{surfaceIndex}.line.dash = 'solid'; |
| 149 | + obj.data{contourIndex}.line.dash = 'solid'; |
128 | 150 | case '--'
|
129 |
| - obj.data{surfaceIndex}.line.dash = 'dash'; |
| 151 | + obj.data{contourIndex}.line.dash = 'dash'; |
130 | 152 | case '-.'
|
131 |
| - obj.data{surfaceIndex}.line.dash = 'dashdot'; |
| 153 | + obj.data{contourIndex}.line.dash = 'dashdot'; |
132 | 154 | case ':'
|
133 |
| - obj.data{surfaceIndex}.line.dash = 'dot'; |
| 155 | + obj.data{contourIndex}.line.dash = 'dot'; |
134 | 156 | end
|
135 | 157 |
|
136 | 158 | %-------------------------------------------------------------------------%
|
|
156 | 178 | xar = max(xData(:));
|
157 | 179 | yar = max(yData(:));
|
158 | 180 | xyar = max([xar, yar]);
|
159 |
| - zar = 0.65*xyar; |
| 181 | + zar = 0.75*xyar; |
160 | 182 | end
|
161 | 183 |
|
162 | 184 | scene.aspectratio.x = 1.1*xyar;
|
|
239 | 261 | %-------------------------------------------------------------------------%
|
240 | 262 |
|
241 | 263 | %-surface name-%
|
242 |
| -obj.data{surfaceIndex}.name = meshData.DisplayName; |
| 264 | +obj.data{contourIndex}.name = meshData.DisplayName; |
243 | 265 |
|
244 | 266 | %-------------------------------------------------------------------------%
|
245 | 267 |
|
246 | 268 | %-surface showscale-%
|
247 | 269 | obj.data{surfaceIndex}.showscale = false;
|
| 270 | +obj.data{contourIndex}.showscale = false; |
248 | 271 |
|
249 | 272 | %-------------------------------------------------------------------------%
|
250 | 273 |
|
251 | 274 | %-surface visible-%
|
252 |
| -obj.data{surfaceIndex}.visible = strcmp(meshData.Visible,'on'); |
| 275 | +obj.data{contourIndex}.visible = strcmp(meshData.Visible,'on'); |
253 | 276 |
|
254 | 277 | %-------------------------------------------------------------------------%
|
255 | 278 |
|
|
263 | 286 | showleg = false;
|
264 | 287 | end
|
265 | 288 |
|
266 |
| -obj.data{surfaceIndex}.showlegend = showleg; |
| 289 | +obj.data{contourIndex}.showlegend = showleg; |
267 | 290 |
|
268 | 291 | %-------------------------------------------------------------------------%
|
269 | 292 |
|
|
0 commit comments