changeset 15803:9f17e8278540

Fix vertical arrows in quiver3 (bug #37933) __quiver__.m (__quiver__): Account for z position when computing arrow heads in 3d mode.
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Mon, 17 Dec 2012 10:48:08 -0500
parents b6b95d041813
children b15cfb7ed0eb
files scripts/plot/private/__quiver__.m
diffstat 1 files changed, 11 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/plot/private/__quiver__.m	Mon Dec 17 08:59:28 2012 -0500
+++ b/scripts/plot/private/__quiver__.m	Mon Dec 17 10:48:08 2012 -0500
@@ -211,12 +211,19 @@
 
     xtmp = x + uu(:) .* (1 - arrowsize);
     ytmp = y + vv(:) .* (1 - arrowsize);
-    xarrw1 = xtmp + (y - yend) * arrowsize / 3;
-    xarrw2 = xtmp - (y - yend) * arrowsize / 3;
-    yarrw1 = ytmp - (x - xend) * arrowsize / 3;
-    yarrw2 = ytmp + (x - xend) * arrowsize / 3;
+
     if (is3d)
+      xarrw1 = xtmp + sqrt((y - yend).^2 + (z - zend).^2) * arrowsize / 3;
+      xarrw2 = xtmp - sqrt((y - yend).^2 + (z - zend).^2) * arrowsize / 3;
+      yarrw1 = ytmp - sqrt((x - xend).^2 + (z - zend).^2) * arrowsize / 3;
+      yarrw2 = ytmp + sqrt((x - xend).^2 + (z - zend).^2) * arrowsize / 3;
+
       zarrw1 = zarrw2 = zend - ww(:) * arrowsize;
+    else
+      xarrw1 = xtmp + (y - yend) * arrowsize / 3;
+      xarrw2 = xtmp - (y - yend) * arrowsize / 3;
+      yarrw1 = ytmp - (x - xend) * arrowsize / 3;
+      yarrw2 = ytmp + (x - xend) * arrowsize / 3;
     endif
 
     if (have_line_spec)