【MATLAB】커서를 쫓는 플롯을 만드는 방법
소개
어느 로고에 대해서 눈이 가볍게 움직이도록 가공된 이미지도 조금 전에 유행했습니다만, 거기에 관련해 만든 코드를 여기에서 공양해 둡니다.
관련 기사
콜백 함수를 사용한 예로는 다음 기사도 있으므로 꼭 참조하십시오.
MATLAB에서 그림 그리기 도구를 만들어 보았다 (마우스 조작 이벤트에 따른 프로그램 예) by @sanmojih 씨
MATLAB으로 게임 만들기 ~1. 콜백편~ by @macht 씨
【MATLAB/AppDesigner】파형을 마우스 드래그로 범위 선택 by @ Dokagui_Titaran 씨
특히 @macht씨의 기사는 콜백 함수 자체의 설명도 정중하게 정리되어 있으므로 추천.
환경
콜백 함수
Figure에는 마우스 조작에 관한 콜백 함수가 3개 있습니다.
콜백 함수
개요
WindowButtonDownFcn
마우스를 클릭할 때 호출되는 콜백 함수
WindowButtonMotionFcn
마우스를 움직일 때 호출되는 콜백 함수
WindowButtonUpFcn
마우스를 놓을 때 호출되는 콜백 함수
여기에서는 커서의 이동을 쫓는 것 뿐이므로 WindowButtonMotionFcn
를 사용합니다.
% コールバック関数を設定
figure('WindowButtonMotionFcn',@myFcn);
이것으로 커서 위치가 이동중은 myFcn
(아래에서 정의)가 불려 가게 됩니다.
원 그리기
여기는 바삭바삭하고 음함수로 묘화. fimplicit
함수( 1 )를 사용합니다.
fimplicit(@(x,y) x.^2+y.^2-1,[-2,2,-2,2])
커서 위치 획득
이것은 axes 객체의 CurrentPoint
로 취할 수 있습니다.
% カーソルの位置取得
cp = ah.CurrentPoint;
mouseMotionExample.m
이상을 정리하면 · · 이하와 같습니다. 놀아보세요.
mouseMotionExample.m
function mouseMotionExample
% コールバック関数を設定
figure('WindowButtonMotionFcn',@myFcn);
% 円を描画
ah = axes;
fimplicit(ah, @(x,y) x.^2+y.^2-1,[-2,2,-2,2])
axis equal
hold on
% 動かす対象の点を作成
ph = plot(nan,nan,'MarkerSize',10,...
'Marker','o','MarkerFaceColor','k');
hold off
function myFcn(src,callbackdata)
% カーソルの位置取得
cp = ah.CurrentPoint;
xMouse = cp(1,1); % x 座標
yMouse = cp(1,2); % y 座標
% 円の中心とカーソル位置を結んだ線分上で
% 中心からの距離が 0.8 のところに点を移動
r0 = 0.8;
r = sqrt(xMouse.^2 + yMouse.^2);
ph.XData = xMouse/r*r0;
ph.YData = yMouse/r*r0;
end
end
도움말 페이지 에서 인용 MATLAB에서 그림 그리기 도구를 만들어 보았다 (마우스 조작 이벤트에 따른 프로그램 예)
Reference
이 문제에 관하여(【MATLAB】커서를 쫓는 플롯을 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/eigs/items/d2c5d53298b2dc5197bf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
% コールバック関数を設定
figure('WindowButtonMotionFcn',@myFcn);
여기는 바삭바삭하고 음함수로 묘화.
fimplicit
함수( 1 )를 사용합니다.fimplicit(@(x,y) x.^2+y.^2-1,[-2,2,-2,2])
커서 위치 획득
이것은 axes 객체의 CurrentPoint
로 취할 수 있습니다.
% カーソルの位置取得
cp = ah.CurrentPoint;
mouseMotionExample.m
이상을 정리하면 · · 이하와 같습니다. 놀아보세요.
mouseMotionExample.m
function mouseMotionExample
% コールバック関数を設定
figure('WindowButtonMotionFcn',@myFcn);
% 円を描画
ah = axes;
fimplicit(ah, @(x,y) x.^2+y.^2-1,[-2,2,-2,2])
axis equal
hold on
% 動かす対象の点を作成
ph = plot(nan,nan,'MarkerSize',10,...
'Marker','o','MarkerFaceColor','k');
hold off
function myFcn(src,callbackdata)
% カーソルの位置取得
cp = ah.CurrentPoint;
xMouse = cp(1,1); % x 座標
yMouse = cp(1,2); % y 座標
% 円の中心とカーソル位置を結んだ線分上で
% 中心からの距離が 0.8 のところに点を移動
r0 = 0.8;
r = sqrt(xMouse.^2 + yMouse.^2);
ph.XData = xMouse/r*r0;
ph.YData = yMouse/r*r0;
end
end
도움말 페이지 에서 인용 MATLAB에서 그림 그리기 도구를 만들어 보았다 (마우스 조작 이벤트에 따른 프로그램 예)
Reference
이 문제에 관하여(【MATLAB】커서를 쫓는 플롯을 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/eigs/items/d2c5d53298b2dc5197bf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
% カーソルの位置取得
cp = ah.CurrentPoint;
이상을 정리하면 · · 이하와 같습니다. 놀아보세요.
mouseMotionExample.m
function mouseMotionExample
% コールバック関数を設定
figure('WindowButtonMotionFcn',@myFcn);
% 円を描画
ah = axes;
fimplicit(ah, @(x,y) x.^2+y.^2-1,[-2,2,-2,2])
axis equal
hold on
% 動かす対象の点を作成
ph = plot(nan,nan,'MarkerSize',10,...
'Marker','o','MarkerFaceColor','k');
hold off
function myFcn(src,callbackdata)
% カーソルの位置取得
cp = ah.CurrentPoint;
xMouse = cp(1,1); % x 座標
yMouse = cp(1,2); % y 座標
% 円の中心とカーソル位置を結んだ線分上で
% 中心からの距離が 0.8 のところに点を移動
r0 = 0.8;
r = sqrt(xMouse.^2 + yMouse.^2);
ph.XData = xMouse/r*r0;
ph.YData = yMouse/r*r0;
end
end
도움말 페이지 에서 인용 MATLAB에서 그림 그리기 도구를 만들어 보았다 (마우스 조작 이벤트에 따른 프로그램 예)
Reference
이 문제에 관하여(【MATLAB】커서를 쫓는 플롯을 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/eigs/items/d2c5d53298b2dc5197bf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)