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

任意の点を中心に回転するには、3 つの変換が必要です。原点への平行移動、回転自体、そして逆方向への平行移動。これらはもちろん、単一の 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 に答える