Free hand drawing in Matlab with output is XY coordinate of trajectory.
조회 수: 21 (최근 30일)
이전 댓글 표시
How i can free draw any trajcetory with the output is the XY coordinate of trajectory like in the picture. I just try to find in the answer in form but did no find any answers satisfiing the requirement. Tks you for any answer.
댓글 수: 0
채택된 답변
Adam Danz
2018년 11월 14일
편집: Adam Danz
2018년 11월 14일
This might be what you're looking for. ginput() allows you to click on a graph as many times as you'd like and it returns a 2-column matrix of x,y coordnates where you clicked.
Demo 1
Run this, click around the axes, press Enter to see where you clicked. xy will be the coordinate of your clicks.
figure
xy = ginput(); % now click as many coordinates as you'd like then press Enter when finished.
plot(xy(:,1), xy(:,2), 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b');
Demo 2
This version plots as you click instead of plotting at the end. Press Enter to stop. xy will be the coordinate of your most recent click.
figure
axh = axes;
hold(axh, 'on')
xy = [0,0];
while ~isempty(xy)
xy = ginput(1);
if ~isempty(xy)
plot(axh, xy(1), xy(2), 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b');
end
end
추가 답변 (1개)
Peter Seibold
2023년 8월 29일
Another demo that stores the xy values:
disp('click inside figure')
disp('hit "return" button to finish')
figure(1)
clf
axh = axes;
hold(axh, 'on')
xlim([0,2])% change the limits to your requirements
ylim([0,1])% change the limits to your requirements
grid on
xyTemp = [0,0];
xy=xyTemp;
k=0;
while ~isempty(xyTemp)
xyTemp = ginput(1);
if ~isempty(xyTemp)
plot(axh, xyTemp(1), xyTemp(2), 'bo', 'MarkerSize', 6, 'MarkerFaceColor', 'b');
k=k+1;
xy(k,:)=xyTemp;
end
end
hold(axh, 'off')
figure(2)
plot(xy(:,1),xy(:,2),'.-b')
grid on
disp('finished')
disp('Previous to a second run you may resize the figure to your requirements')
댓글 수: 0
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!