Skip to content

Commit 758461a

Browse files
Merge pull request plotly#454 from plotly/fix_issue_453
fix issue plotly#453
2 parents 2227beb + 468f0a4 commit 758461a

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

plotly/plotlyfig_aux/handlegraphics/updateQuiver.m

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -145,19 +145,25 @@ function updateScene(obj, dataIndex)
145145
[xSource, ~] = findSourceAxis(obj, axIndex);
146146
scene = eval( sprintf('obj.layout.scene%d', xSource) );
147147

148+
position = axisData.Position;
148149
aspectRatio = axisData.PlotBoxAspectRatio;
149150
cameraPosition = axisData.CameraPosition;
150151
dataAspectRatio = axisData.DataAspectRatio;
151152
cameraUpVector = axisData.CameraUpVector;
152153
cameraEye = cameraPosition./dataAspectRatio;
153-
154+
normFac = abs(min(cameraEye));
155+
154156
try
155-
normFac = 0.42 - 0.105 * (size(axisData.Layout.TileSpan, 2) - 1);
156-
normFac = normFac * abs(min(cameraEye));
157+
fac = size(axisData.Layout.TileSpan, 2);
157158
catch
158-
normFac = 0.42 * abs(min(cameraEye));
159+
fac = 1;
159160
end
160161

162+
r1 = range([ 1, prod(aspectRatio([1,2])) ]);
163+
r2 = range([ 1, prod(aspectRatio([1,3])) ]);
164+
r3 = range([ 1, prod(aspectRatio([2,3])) ]);
165+
r = max([r1, r2, r3]);
166+
161167
%-------------------------------------------------------------------------%
162168

163169
%-aspect ratio-%
@@ -166,9 +172,9 @@ function updateScene(obj, dataIndex)
166172
scene.aspectratio.z = 1.0*aspectRatio(3);
167173

168174
%-camera eye-%
169-
scene.camera.eye.x = cameraEye(1) / normFac;
170-
scene.camera.eye.y = cameraEye(2) / normFac;
171-
scene.camera.eye.z = cameraEye(3) / normFac;
175+
scene.camera.eye.x = cameraEye(1) / normFac * (1.4 + r * fac);
176+
scene.camera.eye.y = cameraEye(2) / normFac * (1.4 + r * fac);
177+
scene.camera.eye.z = cameraEye(3) / normFac * (1.4 + r * fac);
172178

173179
%-camera up-%
174180
scene.camera.up.x = cameraUpVector(1);
@@ -422,7 +428,8 @@ function updateScene(obj, dataIndex)
422428

423429

424430
function scaleFactor = getScaleFactor(xData, uData, nSteps)
425-
xStep = max( abs(diff( mean(xData, 1) )) );
431+
432+
xStep = max( abs(diff( mean(xData(:,:,1), 1) )) );
426433
uStep = max(abs(uData(:)));
427434

428435
scaleFactor = 0.8 * xStep/uStep;

0 commit comments

Comments
 (0)