Asked by Brett
on 14 Nov 2012

Hello Matlab community, I am trying to draw an arrow. I am using Psychtoolbox and there doesn't seem to be a specific command for arrows or triangles. I know how to draw a line:

line = [X-3,Y-40,X+3,Y+40]; Screen('FillRect',window,[200,200,200], line');

So if someone knows the code to draw a triangle I can merge it with the code for a line to draw an arrow. Any help would be greatly appreciated.

Thanks, Brett

Answer by Image Analyst
on 14 Nov 2012

Are you aware of the annotation() function?

annotation('line',x,y) annotation('arrow',x,y) annotation('doublearrow',x,y) annotation('textarrow',x,y) annotation('textbox',[x y w h]) annotation('ellipse',[x y w h]) annotation('rectangle',[x y w h]) annotation(figure_handle,...)

Brett
on 19 Nov 2012

Yes, as Walter said, this did not work.

sina farahi
on 9 Apr 2014

annotation('arrow',x,y) doesn't work

Image Analyst
on 9 Apr 2014

At all? Or just with some figure created by the Psychtoolbox (which is not a Mathworks product and I don't have)? Does this draw an arrow for you:

plot(1:10, 'LineWidth', 2); grid on; annotation('arrow', [.21, .5], [.85, .5], 'LineWidth', 2);

Log in to comment.

Answer by sina farahi
on 9 Apr 2014

usage: Arrow(dot,vector); note: This function draw an arrow (head lines have pi/6 angle and the length of l/5) example: Arrow([10;11;12],[0.2;20;25]);

Log in to comment.

Answer by Sanjay Manohar
on 14 Feb 2017

This is not a MATLAB question. But for completeness, the answer should be

% create a triangle head = [ 100, 100 ]; % coordinates of head width = 10; % width of arrow head points = [ head-[width,0] % left corner head+[width,0] % right corner head+[0,width] ]; % vertex Screen('FillPoly', window,[200,200,200], points);

Log in to comment.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Log in to comment.