我正在尝试使用滑块并在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);
答案 0 :(得分:2)
要围绕任意点旋转,您需要三个变换;翻译到原点,旋转本身,然后翻译回来。这些当然可以组合成一个4D变换矩阵。
我从未使用makehgtform
,但是从文档中看来它似乎有'translate'
选项,听起来就像你需要的那样。
答案 1 :(得分: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