首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将图片放在MATLAB图形的轴上

将图片放在MATLAB图形的轴上
EN

Stack Overflow用户
提问于 2013-05-27 20:22:13
回答 1查看 152关注 0票数 1

我想制作球的动画(由图片here给出),它从原点开始,经过x矢量,y矢量,z矢量(每个nX1)给出的轨迹,知道我需要使用getframe命令,但我不知道如何在轴上移动图片。我知道我可以通过定义新的轴在一个角落里放一张图片,例如(来自MATLAB官方论坛的例子):

代码语言:javascript
复制
numberOfDataPoints = 200;
sampleData = 100*rand(1,numberOfDataPoints);
plot(sampleData);
xlim([1, numberOfDataPoints]);
hold on;
plot(sampleData);
xlim([1, numberOfDataPoints]);
axes1Position = get(gca, 'Position');
logoSizeX = 0.1;
logoSizeY = 0.1;
% Position the logo in the upper right.
x1 = axes1Position(1) + axes1Position(3) - logoSizeX;
y1 = axes1Position(2) + axes1Position(4) - logoSizeY;
hAxis2 = axes('Position', [x1 y1 logoSizeX logoSizeY]);
axis off;
imshow(ball.jpeg);

但由于我不想创建单独的轴,这没有帮助。如何定义球在给定轴上的运动?

EN

回答 1

Stack Overflow用户

发布于 2013-05-28 17:32:56

可以通过存储图像绘制函数返回的句柄并设置其'XData''YData''ZData'属性来移动对象。下面是一个小示例;该示例使用warp在一个球面(使用sphere生成)上绘制图像,然后将其沿随机路径移动。

代码语言:javascript
复制
close all;

% Load image
[img, imgMap] = imread('peppers.png');

sphereImgSize = min(size(img, 1), size(img, 2)); 
sphereImg = img(1:sphereImgSize, 1:sphereImgSize, :);

% Generate sphere vertices
[X, Y, Z] = sphere(sphereImgSize);

lims = [-10 10];

figure;
axes;

hImg = warp(X, Y, Z, sphereImg); % NOTE: Store handle returned

xlim(lims);
ylim(lims);
zlim(lims);
axis square;

% Set up movement path
nFrames = 100;
randPathFun = @()rand(nFrames, 1) * diff(lims) + lims(1);
pathX = randPathFun();
pathY = randPathFun();
pathZ = randPathFun();

% Move the image by setting its 'XData' and 'YData' properties
for ii = 1:nFrames
    xData = X + pathX(ii);
    yData = Y + pathY(ii);
    zData = Z + pathZ(ii);
    set(hImg, 'XData', xData, 'YData', yData, 'ZData', zData);
    pause(0.1);
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16773127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档