Skip to content

Commit 04d3d91

Browse files
committed
better pad value for autoranged cones
1 parent 5a42de0 commit 04d3d91

File tree

6 files changed

+38
-2
lines changed

6 files changed

+38
-2
lines changed

src/plots/gl3d/scene.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -508,7 +508,7 @@ proto.plot = function(sceneData, fullLayout, layout) {
508508
var obj = objects[j];
509509
var objBounds = obj.bounds;
510510
// add worse-case pad for cone traces
511-
var pad = (obj._trace.data._normMax || 0) * dataScale[i];
511+
var pad = 0.75 * (obj._trace.data._compMax || 0) * dataScale[i];
512512
sceneBounds[0][i] = Math.min(sceneBounds[0][i], objBounds[0][i] / dataScale[i] - pad);
513513
sceneBounds[1][i] = Math.max(sceneBounds[1][i], objBounds[1][i] / dataScale[i] + pad);
514514
}

src/traces/cone/calc.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,26 @@ module.exports = function calc(gd, trace) {
1717
var len = Math.min(u.length, v.length, w.length);
1818
var normMax = -Infinity;
1919
var normMin = Infinity;
20+
var compMax = -Infinity;
2021

2122
for(var i = 0; i < len; i++) {
2223
var uu = u[i];
24+
var u2 = uu * uu;
2325
var vv = v[i];
26+
var v2 = vv * vv;
2427
var ww = w[i];
25-
var norm = Math.sqrt(uu * uu + vv * vv + ww * ww);
28+
var w2 = ww * ww;
29+
var norm = Math.sqrt(u2 + v2 + w2);
2630

2731
normMax = Math.max(normMax, norm);
2832
normMin = Math.min(normMin, norm);
33+
compMax = Math.max(compMax, u2, v2, w2);
2934
}
3035

36+
// stash max norm value to convert cmix/cmax -> vertexIntensityBounds
3137
trace._normMax = normMax;
38+
// stash max 'component' value for autorange pad
39+
trace._compMax = Math.sqrt(compMax);
3240

3341
colorscaleCalc(trace, [normMin, normMax], '', 'c');
3442
};
45.9 KB
Loading
360 Bytes
Loading
1.36 KB
Loading
+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"data": [
3+
{
4+
"type": "cone",
5+
"x": [ 1, 1, 1, 1, 3, 3, 3, 3 ],
6+
"y": [ 1, 1, 3, 3, 1, 1, 3, 3 ],
7+
"z": [ 1, 3, 1, 3, 1, 3, 1, 3 ],
8+
"u": [ 1, 2, 3, 4, 1, 2, 3, 4 ],
9+
"v": [ 1, 1, 2, 2, 3, 3, 4, 4 ],
10+
"w": [ 4, 4, 1, 1, 2, 2, 3, 3 ],
11+
"showscale": false
12+
}
13+
],
14+
"layout": {
15+
"scene": {
16+
"camera": {
17+
"eye": {
18+
"x": -0.009629409001286008,
19+
"y": 2.5216768185264913,
20+
"z": 0.42700218501677245
21+
}
22+
}
23+
},
24+
"width": 500,
25+
"height": 500,
26+
"margin": {"t": 0, "b": 0, "l": 0, "r": 0}
27+
}
28+
}

0 commit comments

Comments
 (0)