ginput関数とは
MATLABにはginputという関数があり、座標軸上でクリックした点の座標を取得してくれる関数です。
不満点
すごく直感的に座標を取得できるので便利なのだが、ginputで複数の点をぽちぽちした時、一体どの点をクリックしたのか表示されないのです。ぽちぽちした点を表示するには一旦ginputを抜け出し、plotやscatterで表示しなければいけません。
これの方がいいのでは?
というわけで、ぽちぽちした点の履歴を表示するようにアレンジしてみました。ざっと作ったのでもっといい書き方はあると思います。あと僕はMacを使っているのですが、returnキーのキーコードがわからなかったため、buttonの値をとってみていたら、returnの時にbutton = []が帰って来ました。とりあえずそのままreturnキー押下の判定に使いましたが、多分マズい。
f = figure;
p = plot(0,0);
xlim([0,1])
ylim([0,1])
R = [];
while 1
[x,y,button] = ginput(1);
if isempty(button)
close(f)
break;
elseif button == 1
R = [R; [x,y]];
p.XData = R(:,1);
p.YData = R(:,2);
end
end
これでどこをクリックしたか一目瞭然。