【问题标题】:Placing picture on axis of MATLAB figure将图片放在MATLAB图形的轴上
【发布时间】:2013-05-27 12:22:13
【问题描述】:

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

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);

但由于我不想创建单独的轴,这无济于事。如何定义我的球在给定轴上的运动?

【问题讨论】:

    标签: matlab matlab-figure


    【解决方案1】:

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

    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
    

    【讨论】:

    • 感谢您的回答,但我有两个问题:我希望图片在 3D 轴上移动(似乎设置不起作用)b.因为我的 x、y、z 向量是由 randn 生成的,所以理论上图片可以到处移动...
    • 请查看编辑后的答案。这就是你要找的东西吗?
    • 几乎......我想要一个平面在图片的dimnestions中,它可以做与球体相同的事情......尽管如此,这个解决方案是令人满意的,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多