add a moving image over a plotted trajectory

27 次查看(过去 30 天)
x = 0:pi/100:2*pi;
y = sin(x);
plot(x, y);
%i want my image to move in this way
alpaca = 'alpaca.png';
[I,map,transparency] = imread(alpaca);
%i have this code to remove the background of my image
%i tried using image sc but i couldnt get it to work
%thank you!
  3 个评论
Sumit
Sumit 2023-10-11
Please check attachment. according to that i want multiple image (stationary) along trajectory. How it can be done

请先登录,再进行评论。

采纳的回答

DGM
DGM 2022-5-7
编辑:DGM 2022-5-8
Assuming you actually want it to move in real time, this should be a start
x = 0:pi/100:2*pi;
y = sin(x);
plot(x, y); hold on
%i want my image to move in this way
fname = 'alpaca.png';
[inpict,~,alpha] = imread(fname);
inpict = flipud(inpict); % necessary to keep image upright
alpha = flipud(alpha);
imgsize = [0.7 0.8]; % [x y] in plot coordinates
% get current coordinates for the image
xx = [-0.5 0.5]*imgsize(1) + x(1);
yy = [-0.5 0.5]*imgsize(2) + y(1);
hi = image(xx,yy,inpict);
hi.AlphaData = alpha; % set alpha
% enforce axes extents
axis equal
xlim([0 2*pi] + [-0.5 0.5]*imgsize(1))
ylim([-1 1] + [-0.5 0.5]*imgsize(2))
for k = 1:numel(x)
hi.XData = [-0.5 0.5]*imgsize(1) + x(k);
hi.YData = [-0.5 0.5]*imgsize(2) + y(k);
% wait
pause(0.02)
end
  7 个评论
Ashley
Ashley 2025-4-7
This is probably the best demonstration of a sprite being used in Matlab so far.
Is it possible to make a sprite like this which the user can drag to different areas of the grid?
DGM
DGM 2025-4-7
Probably. I'm not really sure of what the best way to do that would be. It may require setting up some interaction callbacks. I don't think I've ever tried to do this sort of thing specifically. I generally avoid interactive graphics as much as I can.

请先登录,再进行评论。

更多回答(1 个)

Voss
Voss 2022-5-7
Something like this?
x = 0:pi/100:2*pi;
y = sin(x);
figure();
plot(x, y);
hold on
xlim([0 2*pi]);
ylim([-1 1]);
I = imread('alpaca.png');
im = image(I,'XData',[0 1],'YData',[0 1]);
for ii = 1:numel(x)
set(im,'XData',x(ii)+[-0.5 0.5],'YData',y(ii)+[-0.5 0.5]);
drawnow();
end
  5 个评论
Voss
Voss 2022-7-5
编辑:Voss 2022-7-5
Try doing
clear image
and then running it again.
That is, you may have a variable called image in your workspace that needs to be cleared before you can use the image function.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Timing and presenting 2D and 3D stimuli 的更多信息

标签

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by