4.72222

4.7 | 20 ratings Rate this file 75 Downloads (last 30 days) File Size: 430 KB File ID: #14056
image thumbnail

Arrow3 Version 5

by

 

22 Feb 2007 (Updated )

Draws lines with directional arrowheads.

Editor's Notes:

This file was selected as MATLAB Central Pick of the Week

| Watch this File

File Information
Description

ARROW3(P1,P2) draws lines from P1 to P2 with directional arrowheads. P1 and P2 are either nx2 or nx3 matrices. Each row of P1 is an initial point, and each row of P2 is a terminal point.

ARROW3(P1,P2,S,W,H,IP,ALPHA,BETA) can be used to specify properties of the line, initial point marker, and arrowhead. Type "help arrow3" at the command prompt for more information

What's new in Version 5:

All arrowhead and initial point marker sizes (W, H, and IP) are relative to the PlotBox diagonal.

Version 5 attempts to preserve the appearance of existing axes. In particular, ARROW3 will not change XYZLim, View, or CameraViewAngle. ARROW3 does not, however, support stretch-to-fill scaling. If a particular aspect ratio or variable limit is required, use DASPECT, PBASPECT, AXIS, or XYZLIM commands before calling ARROW3. Users are encouraged to report problems directly to the author.

Acknowledgements

Arrow3 Version 4.58 inspired this file.

This file inspired Particle Point Analysis, M Arrow3.M Easy To Use 3 D Arrow, and Determination Of The Minimum Distance Between Two Super Ellipsoids Surfaces. Using Optimization.

MATLAB release MATLAB 6.5 (R13)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (31)
03 Apr 2014 Andreas J.

sorry i didn't want to submit the last voting. I didn't read the "relative to the PlotBox diagonal" at the time i was about to write a critic, but as i reread the description i closed the tab.

But i still think that this is an annoying feature, i would like it more if i could choose wether it should be relative or a fix size. I also don't like that it clears the axes. I know a workaround but it's still annoying me everytime i have to use arrow3. Just my opinion.

02 Apr 2014 Andreas J.  
11 Mar 2014 Daniel  
01 Jun 2013 yang yang

Thanks for your arrow3 program.

17 Jan 2013 Ben

Great code. Have been using it for quite a long time.

17 Jan 2013 Ben  
16 Jan 2013 Matthew  
15 Jan 2013 Tom Davis

Hi, Jonas --

Please try version 5.15. Thanks.

-- Tom

07 Jan 2013 Jonas

I've downloaded arrow3 sometime in 2002 for the first time; great job, guys!

In order to avoid possible conflicts with other code writing to the 'UserData' property, I suggest replacing these calls by "setappdata(ax,'arrow3',value)"

12 Aug 2012 Ji?í

It does not ignore zero magnitue input (R2012a).

>> arrow3([1 1],[1 1])
Error using arrow3 (line 373)
P1 cannot equal P2

23 Mar 2012 Jeonghyun Seo  
13 Mar 2012 Xilu Wang

Thanks!!!

11 Dec 2011 Daniel

Hi Tom,

thanks for that nice contribution. I would enjoy if you could modify the input arguments with string propertys (similar to most of the inbuilt-functions (f.e. 'LineWidth', 2)), in particular to add a 'Parent' property to get rid of the problems with multiple axes!

Thanks,
Daniel

26 Jul 2011 Tom Davis

Hello, Tomazc --

Please try this and write if you have questions. Thanks.

% Animation Example
figure(5)
t=(0:pi/40:8*pi)'; u=cos(t); v=sin(t);
plot3(20*t,u,v)
axis([0,600,-1.5,1.5,-1.5,1.5])
grid on, view(35,25)
hold on
pbaspect([1.8,1.4,1])
arrow3(zeros(3),diag([500,1.5,1.5]),'l',0.7,[],0)
p=[20*t,u,v]; inc=4:1:length(t);
p2=p(inc,:); p1=p(inc-1,:);
hn=arrow3(p1(1,:),p2(1,:),'0_b',0.7);
for i=2:1:length(p1)
delete(hn)
hn=arrow3(p1(i,:),p2(i,:),'0_b',0.7);
pause(0.01)
end
hold off

23 Jul 2011 solo  
19 Jul 2011 Tomazc

I'd like to use arrow3 in animation (for function) where only one arrow will be shown, so i cannot use 'hold on'.
In this case the 'axis' are not working, but i need the same view.

Any suggestion?

figure('Name',['Arrow'])
axis([-400 400 -400 400 -100 700])
XLABEL('x')
YLABEL('y')
ZLABEL('z')
whitebg([1 1 1]);
set(gcf,'Color',[1,1,1]);
view(35, 25)
grid on

for i = 1:1:15
arrow3([x(i),y(i),z(i)],[fx(i),f(i),fz(i)]);
pause(0.1)
end

07 Feb 2011 Sauro Salomoni

Does what it's supposed to do, and the help files are VERY detailed. Thank you very much! :)

05 Aug 2009 Gabriel Akira Schreiber  
20 Jul 2009 Gabriel Akira Schreiber  
02 Apr 2009 Tom Davis

Instead of using Copy Figure from the Edit menu, use Save As from the File menu, save the figure as a PNG file, and then insert the PNG file into Word.

01 Apr 2009 Lei Shang

Very useful with 3D plots. But when I'm copying figures to word, all the nice arrows plotted by 'arrow3.m' disappeared. And my command window displays:

Warning: RGB CData not yet supported in Painter's mode
> In graphics\private\restorehg at 100
In graphics\private\restore at 29
In print at 277
In editmenufcn at 78

How do I fix this?

01 Apr 2009 Lei Shang  
23 Jan 2009 Tom Davis

Wide lines may obscure the arrowhead tip, but the line endpoint and arrowhead tip are _always_ coincident.

21 Jan 2009 Philipp Wissgott

On my matlab (R2007a) the line of the arrow is visible after the tip of the arrowhead in 2D plots. It looks like as if the arrowhead is plotted at the wrong position.
In my example arrow3 is called after some calls of "line()" and "rectangle()". I can supply further information if required.

29 Dec 2008 Tom Davis

It is not necessary to set AXIS EQUAL, but commands that may change the aspect ratio should be issued _before_ calling ARROW3. ARROW3 draws surfaces that look like right circular cones and spheres no matter the aspect ratio, but the ratio must be fixed, and changing the ratio will distort the surfaces.

There are many examples in the HTML files that illustrate how to use ARROW3 before and after PLOT, POLAR, CONTOUR, PLOT3, SURF, SLICE, and PATCH.

27 Dec 2008 piao lin

it seems if I want to plot another plot3(......) with arrow3(.....)

I should

figure,arrow3(.....);
hold on;
axis equal ; %you'd better use axis equal
plot3(....);

if I put plot3(....) before arrow3(.....) ,just like below ,I get not see the result of arrow3(.....);

figure,plot3(....);
hold on;
axis equal ; %you'd better use axis equal
arrow3(.....);

13 Dec 2008 Vaibhav Deshpande

I am doing a project in layup optimization of balanced symmetric laminates, and I wanted to display at each call to fmincon the material direction for my laminate, I was able to so by using arrow3, thank you.

Regards,
Vaibhav Deshpande.

12 Sep 2008 Georg Stillfried

works fine

13 Apr 2008 dong ding

it's excellent.I can use it to draw my picture. thanks!

24 Oct 2007 Ahmet Sacan

I was happily using arrow.m until I came to see that it for some reason did not draw anything when my m file was deployed (i.e., running executable that resulted from mcc). I came back to File Exchange for a different arrower instead of trying to debug arrow.m. Now I'm using arrow3 which works fine in deployed mode. thanks.

13 Mar 2007 maricel miguel

I havent tried it but looks good from the screen shot, what was the thought process on this one, and how long did it took you

Updates
12 Mar 2007

improved code metrics

11 Apr 2007

added dialog

11 Apr 2007

added dialog

13 Apr 2007

dialog revision

29 May 2007

magnitude coloring and documentation revision

04 Jun 2007

more examples

05 Jun 2007

more examples

15 Jun 2007

corrected example 2

18 Jun 2007

simplified example 10

25 Jun 2007

added example references; check for empty input

25 Jun 2007

added example references; check for empty input

02 Jul 2007

modified named colors to match default ColorOrder

09 Jul 2007

modified named colors to match Simulink colors

16 Jul 2007

revised html files

17 Jul 2007

new screenshot

25 Jul 2007

ignore zero-magnitude input

10 Sep 2007

added cone plot option

01 Oct 2007

changed screenshot

24 Oct 2007

zero magnitude bug fix

17 Mar 2008

updated contact information

13 May 2009

corrected spelling errors

27 Jul 2011

updated html files and added animation example

27 Jul 2011

updated html files and added animation example

01 Aug 2011

improved html appearance in File Exchange viewer

03 Aug 2011

corrected DOCTYPE

15 Jan 2013

use appdata instead of userdata

15 Jan 2013

use appdata instead of userdata

Contact us