diff --git a/src/traces/isosurface/attributes.js b/src/traces/isosurface/attributes.js index fd170ae05b1..bff5d187dd3 100644 --- a/src/traces/isosurface/attributes.js +++ b/src/traces/isosurface/attributes.js @@ -34,7 +34,7 @@ function makeSliceAttr(axLetter) { role: 'info', description: [ 'Specifies the location(s) of slices on the axis.', - 'When not locations specified slices would be created for', + 'When not specified slices would be created for', 'all points of the axis', axLetter, 'except start and end.' ].join(' ') }, diff --git a/src/traces/surface/attributes.js b/src/traces/surface/attributes.js index f43ba1ed772..56c8f14cfe8 100644 --- a/src/traces/surface/attributes.js +++ b/src/traces/surface/attributes.js @@ -44,6 +44,40 @@ function makeContourAttr(axLetter) { 'dimension are drawn.' ].join(' ') }, + start: { + valType: 'number', + dflt: null, + role: 'style', + editType: 'plot', + // impliedEdits: {'^autocontour': false}, + description: [ + 'Sets the starting contour level value.', + 'Must be less than `contours.end`' + ].join(' ') + }, + end: { + valType: 'number', + dflt: null, + role: 'style', + editType: 'plot', + // impliedEdits: {'^autocontour': false}, + description: [ + 'Sets the end contour level value.', + 'Must be more than `contours.start`' + ].join(' ') + }, + size: { + valType: 'number', + dflt: null, + min: 0, + role: 'style', + editType: 'plot', + // impliedEdits: {'^autocontour': false}, + description: [ + 'Sets the step between each contour level.', + 'Must be positive.' + ].join(' ') + }, project: { x: makeContourProjAttr('x'), y: makeContourProjAttr('y'), diff --git a/src/traces/surface/convert.js b/src/traces/surface/convert.js index 74d08837ce3..7bdd1e2469b 100644 --- a/src/traces/surface/convert.js +++ b/src/traces/surface/convert.js @@ -28,12 +28,15 @@ function SurfaceTrace(scene, surface, uid) { this.surface = surface; this.data = null; this.showContour = [false, false, false]; + this.contourStart = [null, null, null]; + this.contourEnd = [null, null, null]; + this.contourSize = [0, 0, 0]; this.minValues = [Infinity, Infinity, Infinity]; this.maxValues = [-Infinity, -Infinity, -Infinity]; this.dataScaleX = 1.0; this.dataScaleY = 1.0; this.refineData = true; - this._interpolatedZ = false; + this.objectOffset = [0, 0, 0]; } var proto = SurfaceTrace.prototype; @@ -349,19 +352,54 @@ proto.refineCoords = function(coords) { } }; +function insertIfNewLevel(arr, newValue) { + var found = false; + for(var k = 0; k < arr.length; k++) { + if(newValue === arr[k]) { + found = true; + break; + } + } + if(found === false) arr.push(newValue); +} + proto.setContourLevels = function() { - var nlevels = [[], [], []]; + var newLevels = [[], [], []]; + var useNewLevels = [false, false, false]; var needsUpdate = false; - for(var i = 0; i < 3; ++i) { + var i, j, value; + + for(i = 0; i < 3; ++i) { if(this.showContour[i]) { needsUpdate = true; - nlevels[i] = this.scene.contourLevels[i]; + + if( + this.contourSize[i] > 0 && + this.contourStart[i] !== null && + this.contourEnd[i] !== null && + this.contourEnd[i] > this.contourStart[i] + ) { + useNewLevels[i] = true; + + for(j = this.contourStart[i]; j < this.contourEnd[i]; j += this.contourSize[i]) { + value = j * this.scene.dataScale[i]; + + insertIfNewLevel(newLevels[i], value); + } + } + } } if(needsUpdate) { - this.surface.update({ levels: nlevels }); + var allLevels = [[], [], []]; + for(i = 0; i < 3; ++i) { + if(this.showContour[i]) { + allLevels[i] = useNewLevels[i] ? newLevels[i] : this.scene.contourLevels[i]; + } + } + this.surface.update({ levels: allLevels }); } }; @@ -456,7 +494,7 @@ proto.update = function(data) { } for(i = 0; i < 3; i++) { - data._objectOffset[i] = 0.5 * (this.minValues[i] + this.maxValues[i]); + this.objectOffset[i] = 0.5 * (this.minValues[i] + this.maxValues[i]); } for(i = 0; i < 3; i++) { @@ -464,7 +502,7 @@ proto.update = function(data) { for(k = 0; k < ylen; k++) { v = rawCoords[i][j][k]; if(v !== null && v !== undefined) { - rawCoords[i][j][k] -= data._objectOffset[i]; + rawCoords[i][j][k] -= this.objectOffset[i]; } } } @@ -564,8 +602,16 @@ proto.update = function(data) { surface.highlightTint[i] = params.contourTint[i] = 1; } params.contourWidth[i] = contourParams.width; + + this.contourStart[i] = contourParams.start; + this.contourEnd[i] = contourParams.end; + this.contourSize[i] = contourParams.size; } else { this.showContour[i] = false; + + this.contourStart[i] = null; + this.contourEnd[i] = null; + this.contourSize[i] = 0; } if(contourParams.highlight) { @@ -579,11 +625,7 @@ proto.update = function(data) { params.vertexColor = true; } - params.objectOffset = [ - data._objectOffset[0], - data._objectOffset[1], - data._objectOffset[2] - ]; + params.objectOffset = this.objectOffset; params.coords = coords; surface.update(params); diff --git a/src/traces/surface/defaults.js b/src/traces/surface/defaults.js index 5f883f8fd65..b1d55d3ebd0 100644 --- a/src/traces/surface/defaults.js +++ b/src/traces/surface/defaults.js @@ -36,8 +36,6 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout traceOut._xlength = (Array.isArray(x) && Lib.isArrayOrTypedArray(x[0])) ? z.length : z[0].length; traceOut._ylength = z.length; - traceOut._objectOffset = [0, 0, 0]; - var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleTraceDefaults'); handleCalendarDefaults(traceIn, traceOut, ['x', 'y', 'z'], layout); @@ -85,6 +83,10 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce(contourDim + '.highlightcolor'); coerce(contourDim + '.highlightwidth'); } + + coerce(contourDim + '.start'); + coerce(contourDim + '.end'); + coerce(contourDim + '.size'); } // backward compatibility block diff --git a/test/image/baselines/gl3d_surface_contour_start-end-size.png b/test/image/baselines/gl3d_surface_contour_start-end-size.png new file mode 100644 index 00000000000..aa153fc3033 Binary files /dev/null and b/test/image/baselines/gl3d_surface_contour_start-end-size.png differ diff --git a/test/image/mocks/gl3d_surface_contour_start-end-size.json b/test/image/mocks/gl3d_surface_contour_start-end-size.json new file mode 100644 index 00000000000..9eab0879d79 --- /dev/null +++ b/test/image/mocks/gl3d_surface_contour_start-end-size.json @@ -0,0 +1,142 @@ +{ + "data": [ + { + "type": "surface", + "colorscale": "Portland", + "colorbar": { + "title": "elevation", + "len": 0.5, + "y": 0.0, + "yanchor": "bottom" + }, + "contours": { + "x": { "show": false, "start": 2.2, "end": 3.81, "size": 0.4 }, + "y": { "show": false, "start": 3.2, "end": 3.81, "size": 0.2 }, + "z": { "show": true, "start": 0.1, "end": 0.41, "size": 0.1 } + }, + "x": [1, 2, 3, 4, 5], + "y": [1, 2, 3 ,4, 5], + "z": [ + [0, 1, 0, 1, 0], + [1, 0, 1, 0, 1], + [0, 1, 0, 1, 0], + [1, 0, 1, 0, 1], + [0, 1, 0, 1, 0] + ] + }, + { + "type": "surface", + "colorbar": { + "title": "parametric", + "len": 0.5, + "y": 0.5, + "yanchor": "bottom" + }, + "contours": { + "x": { "show": true, "start": 1.0, "end": 2.01, "size": 0.25}, + "y": { "show": true, "start": -2.0, "end": -1.01, "size": 0.25}, + "z": { "show": true, "start": 1.0, "end": 1.41, "size": 0.10} + }, + "x": [ + [0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000], + [0.201,0.198,0.190,0.178,0.161,0.142,0.121,0.100,0.080,0.064,0.051,0.043,0.040,0.043,0.051,0.064,0.080,0.100,0.121,0.142,0.161,0.178,0.190,0.198,0.201], + [0.361,0.356,0.342,0.319,0.289,0.254,0.217,0.179,0.144,0.114,0.092,0.077,0.072,0.077,0.092,0.114,0.144,0.179,0.217,0.254,0.289,0.319,0.342,0.356,0.361], + [0.442,0.436,0.418,0.390,0.354,0.311,0.265,0.219,0.177,0.140,0.112,0.094,0.088,0.094,0.112,0.140,0.177,0.219,0.265,0.311,0.354,0.390,0.418,0.436,0.442], + [0.417,0.411,0.394,0.368,0.333,0.293,0.250,0.207,0.167,0.132,0.106,0.089,0.083,0.089,0.106,0.132,0.167,0.207,0.250,0.293,0.333,0.368,0.394,0.411,0.417], + [0.270,0.266,0.255,0.238,0.216,0.190,0.162,0.134,0.108,0.086,0.068,0.058,0.054,0.058,0.068,0.086,0.108,0.134,0.162,0.190,0.216,0.238,0.255,0.266,0.270], + [0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000], + [-0.377,-0.372,-0.357,-0.333,-0.302,-0.266,-0.226,-0.187,-0.151,-0.120,-0.096,-0.081,-0.075,-0.081,-0.096,-0.120,-0.151,-0.187,-0.226,-0.266,-0.302,-0.333,-0.357,-0.372,-0.377], + [-0.833,-0.822,-0.789,-0.736,-0.667,-0.586,-0.500,-0.414,-0.333,-0.264,-0.211,-0.178,-0.167,-0.178,-0.211,-0.264,-0.333,-0.414,-0.500,-0.586,-0.667,-0.736,-0.789,-0.822,-0.833], + [-1.326,-1.308,-1.255,-1.170,-1.061,-0.933,-0.795,-0.658,-0.530,-0.420,-0.336,-0.283,-0.265,-0.283,-0.336,-0.420,-0.530,-0.658,-0.795,-0.933,-1.061,-1.170,-1.255,-1.308,-1.326], + [-1.804,-1.780,-1.708,-1.593,-1.443,-1.269,-1.083,-0.896,-0.722,-0.572,-0.458,-0.385,-0.361,-0.385,-0.458,-0.572,-0.722,-0.896,-1.083,-1.269,-1.443,-1.593,-1.708,-1.780,-1.804], + [-2.214,-2.183,-2.095,-1.954,-1.771,-1.557,-1.328,-1.099,-0.885,-0.702,-0.561,-0.473,-0.443,-0.473,-0.561,-0.702,-0.885,-1.099,-1.328,-1.557,-1.771,-1.954,-2.095,-2.183,-2.214], + [-2.500,-2.466,-2.366,-2.207,-2.000,-1.759,-1.500,-1.241,-1.000,-0.793,-0.634,-0.534,-0.500,-0.534,-0.634,-0.793,-1.000,-1.241,-1.500,-1.759,-2.000,-2.207,-2.366,-2.466,-2.500], + [-2.616,-2.580,-2.476,-2.310,-2.093,-1.840,-1.570,-1.299,-1.046,-0.830,-0.663,-0.559,-0.523,-0.559,-0.663,-0.830,-1.046,-1.299,-1.570,-1.840,-2.093,-2.310,-2.476,-2.580,-2.616], + [-2.526,-2.491,-2.391,-2.230,-2.021,-1.777,-1.516,-1.254,-1.010,-0.801,-0.641,-0.540,-0.505,-0.540,-0.641,-0.801,-1.010,-1.254,-1.516,-1.777,-2.021,-2.230,-2.391,-2.491,-2.526], + [-2.210,-2.180,-2.091,-1.951,-1.768,-1.555,-1.326,-1.097,-0.884,-0.701,-0.560,-0.472,-0.442,-0.472,-0.560,-0.701,-0.884,-1.097,-1.326,-1.555,-1.768,-1.951,-2.091,-2.180,-2.210], + [-1.667,-1.644,-1.577,-1.471,-1.333,-1.173,-1.000,-0.827,-0.667,-0.529,-0.423,-0.356,-0.333,-0.356,-0.423,-0.529,-0.667,-0.827,-1.000,-1.173,-1.333,-1.471,-1.577,-1.644,-1.667], + [-0.917,-0.904,-0.868,-0.809,-0.733,-0.645,-0.550,-0.455,-0.367,-0.291,-0.232,-0.196,-0.183,-0.196,-0.232,-0.291,-0.367,-0.455,-0.550,-0.645,-0.733,-0.809,-0.868,-0.904,-0.917], + [-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000], + [1.024,1.011,0.970,0.904,0.820,0.721,0.615,0.509,0.410,0.325,0.260,0.219,0.205,0.219,0.260,0.325,0.410,0.509,0.615,0.721,0.820,0.904,0.970,1.011,1.024], + [2.083,2.055,1.972,1.839,1.667,1.466,1.250,1.034,0.833,0.661,0.528,0.445,0.417,0.445,0.528,0.661,0.833,1.034,1.250,1.466,1.667,1.839,1.972,2.055,2.083], + [3.094,3.051,2.928,2.731,2.475,2.176,1.856,1.536,1.237,0.981,0.785,0.661,0.619,0.661,0.785,0.981,1.237,1.536,1.856,2.176,2.475,2.731,2.928,3.051,3.094], + [3.969,3.915,3.757,3.504,3.175,2.793,2.382,1.971,1.588,1.259,1.007,0.848,0.794,0.848,1.007,1.259,1.588,1.971,2.382,2.793,3.175,3.504,3.757,3.915,3.969], + [4.628,4.565,4.380,4.086,3.703,3.256,2.777,2.298,1.851,1.468,1.174,0.989,0.926,0.989,1.174,1.468,1.851,2.298,2.777,3.256,3.703,4.086,4.380,4.565,4.628], + [5.000,4.932,4.732,4.414,4.000,3.518,3.000,2.482,2.000,1.586,1.268,1.068,1.000,1.068,1.268,1.586,2.000,2.482,3.000,3.518,4.000,4.414,4.732,4.932,5.000] + ], + "y": [ + [0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000], + [0.054,0.053,0.051,0.048,0.043,0.038,0.032,0.027,0.022,0.017,0.014,0.012,0.011,0.012,0.014,0.017,0.022,0.027,0.032,0.038,0.043,0.048,0.051,0.053,0.054], + [0.208,0.205,0.197,0.184,0.167,0.147,0.125,0.103,0.083,0.066,0.053,0.045,0.042,0.045,0.053,0.066,0.083,0.103,0.125,0.147,0.167,0.184,0.197,0.205,0.208], + [0.442,0.436,0.418,0.390,0.354,0.311,0.265,0.219,0.177,0.140,0.112,0.094,0.088,0.094,0.112,0.140,0.177,0.219,0.265,0.311,0.354,0.390,0.418,0.436,0.442], + [0.722,0.712,0.683,0.637,0.577,0.508,0.433,0.358,0.289,0.229,0.183,0.154,0.144,0.154,0.183,0.229,0.289,0.358,0.433,0.508,0.577,0.637,0.683,0.712,0.722], + [1.006,0.992,0.952,0.888,0.805,0.708,0.604,0.500,0.402,0.319,0.255,0.215,0.201,0.215,0.255,0.319,0.402,0.500,0.604,0.708,0.805,0.888,0.952,0.992,1.006], + [1.250,1.233,1.183,1.104,1.000,0.879,0.750,0.621,0.500,0.396,0.317,0.267,0.250,0.267,0.317,0.396,0.500,0.621,0.750,0.879,1.000,1.104,1.183,1.233,1.250], + [1.409,1.389,1.333,1.244,1.127,0.991,0.845,0.699,0.563,0.447,0.357,0.301,0.282,0.301,0.357,0.447,0.563,0.699,0.845,0.991,1.127,1.244,1.333,1.389,1.409], + [1.443,1.424,1.366,1.274,1.155,1.015,0.866,0.717,0.577,0.458,0.366,0.308,0.289,0.308,0.366,0.458,0.577,0.717,0.866,1.015,1.155,1.274,1.366,1.424,1.443], + [1.326,1.308,1.255,1.170,1.061,0.933,0.795,0.658,0.530,0.420,0.336,0.283,0.265,0.283,0.336,0.420,0.530,0.658,0.795,0.933,1.061,1.170,1.255,1.308,1.326], + [1.042,1.027,0.986,0.920,0.833,0.733,0.625,0.517,0.417,0.330,0.264,0.223,0.208,0.223,0.264,0.330,0.417,0.517,0.625,0.733,0.833,0.920,0.986,1.027,1.042], + [0.593,0.585,0.561,0.524,0.475,0.417,0.356,0.294,0.237,0.188,0.150,0.127,0.119,0.127,0.150,0.188,0.237,0.294,0.356,0.417,0.475,0.524,0.561,0.585,0.593], + [0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000], + [-0.701,-0.691,-0.663,-0.619,-0.561,-0.493,-0.421,-0.348,-0.280,-0.222,-0.178,-0.150,-0.140,-0.150,-0.178,-0.222,-0.280,-0.348,-0.421,-0.493,-0.561,-0.619,-0.663,-0.691,-0.701], + [-1.458,-1.438,-1.380,-1.287,-1.167,-1.026,-0.875,-0.724,-0.583,-0.463,-0.370,-0.312,-0.292,-0.312,-0.370,-0.463,-0.583,-0.724,-0.875,-1.026,-1.167,-1.287,-1.380,-1.438,-1.458], + [-2.210,-2.180,-2.091,-1.951,-1.768,-1.555,-1.326,-1.097,-0.884,-0.701,-0.560,-0.472,-0.442,-0.472,-0.560,-0.701,-0.884,-1.097,-1.326,-1.555,-1.768,-1.951,-2.091,-2.180,-2.210], + [-2.887,-2.847,-2.732,-2.549,-2.309,-2.031,-1.732,-1.433,-1.155,-0.916,-0.732,-0.617,-0.577,-0.617,-0.732,-0.916,-1.155,-1.433,-1.732,-2.031,-2.309,-2.549,-2.732,-2.847,-2.887], + [-3.421,-3.374,-3.238,-3.020,-2.737,-2.407,-2.053,-1.698,-1.368,-1.085,-0.868,-0.731,-0.684,-0.731,-0.868,-1.085,-1.368,-1.698,-2.053,-2.407,-2.737,-3.020,-3.238,-3.374,-3.421], + [-3.750,-3.699,-3.549,-3.311,-3.000,-2.638,-2.250,-1.862,-1.500,-1.189,-0.951,-0.801,-0.750,-0.801,-0.951,-1.189,-1.500,-1.862,-2.250,-2.638,-3.000,-3.311,-3.549,-3.699,-3.750], + [-3.823,-3.771,-3.619,-3.376,-3.059,-2.690,-2.294,-1.898,-1.529,-1.213,-0.970,-0.817,-0.765,-0.817,-0.970,-1.213,-1.529,-1.898,-2.294,-2.690,-3.059,-3.376,-3.619,-3.771,-3.823], + [-3.608,-3.559,-3.415,-3.186,-2.887,-2.539,-2.165,-1.791,-1.443,-1.144,-0.915,-0.771,-0.722,-0.771,-0.915,-1.144,-1.443,-1.791,-2.165,-2.539,-2.887,-3.186,-3.415,-3.559,-3.608], + [-3.094,-3.051,-2.928,-2.731,-2.475,-2.176,-1.856,-1.536,-1.237,-0.981,-0.785,-0.661,-0.619,-0.661,-0.785,-0.981,-1.237,-1.536,-1.856,-2.176,-2.475,-2.731,-2.928,-3.051,-3.094], + [-2.292,-2.260,-2.169,-2.023,-1.833,-1.612,-1.375,-1.138,-0.917,-0.727,-0.581,-0.490,-0.458,-0.490,-0.581,-0.727,-0.917,-1.138,-1.375,-1.612,-1.833,-2.023,-2.169,-2.260,-2.292], + [-1.240,-1.223,-1.174,-1.095,-0.992,-0.872,-0.744,-0.616,-0.496,-0.393,-0.314,-0.265,-0.248,-0.265,-0.314,-0.393,-0.496,-0.616,-0.744,-0.872,-0.992,-1.095,-1.174,-1.223,-1.240], + [-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000,-0.000] + ], + "z": [ + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000], + [1.000,1.259,1.500,1.707,1.866,1.966,2.000,1.966,1.866,1.707,1.500,1.259,1.000,0.741,0.500,0.293,0.134,0.034,0.000,0.034,0.134,0.293,0.500,0.741,1.000] + ] + } + ], + "layout": { + "title": "Surface contours using start, end and size", + "width": 900, + "height": 600, + "scene": { + "xaxis": { "nticks": 12 }, + "yaxis": { "nticks": 12 }, + "zaxis": { "nticks": 4 }, + "camera": { + "eye": { "x": 0.9, "y": 0.6, "z": 0.6 }, + "center": { "x": 0, "y": 0, "z": -0.3 } + }, + "aspectratio": { + "x": 1, + "y": 1, + "z": 0.25 + } + } + } +}