1

我正在尝试使用滑块并在 matlab 中旋转球体。如果球体在原点,它会起作用。但是当我旋转它时,我的球体在点(2.5,2.5,7.5),整个球体仍然围绕原点旋转。我希望它保持在原点并旋转。

我的代码:这是我的滑块功能

function  slider_callback1(hObject, eventdata)
            s1 = get(slider, 'value');        
            R1 = makehgtform('zrotate', s1);
            set(t1, 'Matrix', R1);
            drawnow;
  end

在哪里

t1 = hgtransform;
set(sphere_1, 'Parent', t1);
4

2 回答 2

2

要围绕任意点旋转,您需要三个变换;平移到原点,旋转本身,然后平移回来。这些当然可以组合成一个 4D 变换矩阵。

我从来没有使用过makehgtform,但从文档来看,它似乎有一个'translate'选项,这听起来像你需要的。

于 2013-03-02T23:35:41.583 回答
0

谢谢,我是这样解决的:

function slider_callback1(hObject, eventdata)
    s1 = get(cabin, 'value');        
    R1 = makehgtform('zrotate', s1);

    R1(1,4) = 2.5;
    R1(2,4) = 2.5;
    R1(3,4) = 7.5;
    set(t1, 'Matrix', R1);

    s1 = floor(s1 * (180/pi) * 10)/10;
    set(sth1, 'String', num2str(s1));
    drawnow;
end
于 2013-03-03T04:34:09.520 回答