how to force Draggable points to move along a line?

1 view (last 30 days)
Hi All. I would like to use impoint to generate a draggable point. But I want to force it to move along a line. I try to do so by setPosition, but it does not work properly. Any help?
function test()
h1 = impoint(gca,[5, 5])
setString(h1,'h1');
addNewPositionCallback(h1,@(h1) CallThis(1,[1 2],[ 2 ]));
axis([0 10 0 10])
function CallThis(varargin)
pos = h1.getPosition()
h1.setPosition([pos(1,1), 2*pos(1,1)])
end
end
  2 Comments
Mohsen  Davarynejad
Mohsen Davarynejad on 14 May 2013
Sure, I mean that the point moves freely. It does not move along the line. Basically the setPosition command within the CallThis function does not update the position of the point.

Sign in to comment.

Answers (1)

Roman Willi
Roman Willi on 2 Jul 2018
move along a line:
obj.dragPoint = impoint();
hp = addNewPositionCallback(obj.dragPoint,@(pos) point_move(obj,pos));
function point_move(obj, pos)
pos = [.....] % Calc Y Point of line
axilim = [.....] % X axi limit
fcn = makeConstrainToRectFcn('impoint',axilim, [pos pos]);
setPositionConstraintFcn(obj.dragPoint, fcn);
end

Categories

Find more on Specifying Target for Graphics Output in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!