Code covered by the BSD License

### Highlights from Moveit2 - Move a graphical object with the mouse.

4.8
4.8 | 5 ratings Rate this file 29 Downloads (last 30 days) File Size: 1.67 KB File ID: #23304 Version: 1.0

# Moveit2 - Move a graphical object with the mouse.

### Anders Brun (view profile)

Move graphical objects with your mouse. Works for pcolor, plot, patches and perhaps more.

File Information
Description

This is really a small hack that I wanted to share just to inspire more people to make interactive Matlab graphics. Use it as is or use the code as a template to do more advanced stuff.

Here is how it works (for a 2-D patch):

% First make the patch ...
t = 0:2*pi/20:2*pi;
X = 3 + sin(t); Y = 2 + cos(t); Z = X*0;
h = patch(X,Y,Z,'g')
axis([-10 10 -10 10]);
% Then make it movable
moveit2(h);

It also works for e.g. pcolor and plot:

% Adjust data to fit hypothesis using the mouse ... :-)
a = plot(rand(10,10));
moveit2(a);

Acknowledgements
MATLAB release MATLAB 7.8 (R2009a)
21 May 2014 Brandon

### Brandon (view profile)

This works great, Anders! Is there a way to return the new position of the graphical object?

03 Nov 2013 Erick Villegas

### Erick Villegas (view profile)

Hi! I use your code as you post it but didn't work it say's:

Undefined function 'moveit2' for input arguments of
type 'double'.

Error in Moveimageexample (line 8)
moveit2(h);

Any help!!!

Comment only
10 Jan 2011 Jonathan

### Jonathan (view profile)

02 Jul 2010 Gang Wang

### Gang Wang (view profile)

Hi Anders, I am using Moveit2 and find this interactive tool is great!

For my curiosity, I produced a 3D object patch (triangulated) and input to the function.

It can be observed that the object translates on XY plane. But the shape of the object is no longer preserved.

I did debugging and observed that the size of 'Vertices' matrix under the gui.currenthandle is automatically changed after line 66:
set(gui.currenthandle,'XData',XYData{1} + pos(1,1));

In other words, if the size of 'X' or 'YData' is [3 by 100];
then the new vertices size will always be updated to [3*100 by 3].

I guess some private functions updates the 'Vertices' whenever the XYZData is changed. But I cannot find the mechanism behind this.

01 Nov 2009 Jan Simon

### Jan Simon (view profile)

Sorry, too confusing typos.
If the original WindowButton-Motion/-Up functions are restored after your function has finished, I will rate it with 5 stars.

Comment only
23 Oct 2009 Jan Simon

### Jan Simon (view profile)

No, please do not use a global variable. The need of an obscure name is a warning already! I'd suggest using the ApplicationData of the object, see setappdata.
Itr would restore the original WindowButtonMotionUp functions after your function is finished.

17 Mar 2009 Anders Brun

### Anders Brun (view profile)

thanks a lot for the 5 star... Just a comment, there are still things that can be simplified. In particular I think it would be possible to store state of the object in a smarter and even more invisible way, instead of using the UserData attributes. Perhaps a global variable with an obscure name would do it.

Comment only
16 Mar 2009 Jveer

### Jveer (view profile)

5* for simplicity

Comment only
16 Mar 2009 Jveer