how to force Draggable points to move along a line?

5 vues (au cours des 30 derniers jours)
Mohsen  Davarynejad
Mohsen Davarynejad le 14 Mai 2013
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 commentaires
Jan
Jan le 14 Mai 2013
"It does not work properly" is a vague description only. Please do not let us guess, but explain the difference between your expectations and the results.
Mohsen  Davarynejad
Mohsen Davarynejad le 14 Mai 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.

Connectez-vous pour commenter.

Réponses (1)

Roman Willi
Roman Willi le 2 Juil 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

Community Treasure Hunt

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

Start Hunting!

Translated by