2013-03-02 46 views
1

我正在嘗試使用滑塊並在matlab中旋轉一個球體。它起作用,如果球體在原點。但是當我旋轉它時,我的球體在點(2.5,2.5,7.5)處,整個球體仍圍繞原點旋轉。我希望它保持在這一點,只是旋轉。MATLAB - 使用makehgtform旋轉對象 - zrotate只在原點附近

我的代碼:這是我的滑塊功能

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

回答

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 
1

要繞的任意一點,你需要三個變換;翻譯到原點,旋轉本身,然後翻譯回來。這些當然可以組合成單個4D變換矩陣。

我從來沒有使用makehgtform,但從文檔看來它似乎有一個'translate'選項,這聽起來像你所需要的。