如何旋转一个矩形

193(30天)
内森出差费
内森出差费 2020年2月18日
回答: 2022年3月5日
你好!
我工作在动态悬架系统建模和我试图创建一个动画。我有翻译组件和工作完成好,但我需要旋转一个矩形,出于某种原因,它不是工作。
我用下面的代码来创建矩形和关于z轴旋转45度:
旋转(矩形(“位置”(x_left xc-height / 2 + 2 * mass_height_diff w_chassis + 1,高度),“EdgeColor”,“黑”)、(0 0 1),45)
然而,运行代码显示了长方形上下移动,因为它应该但不旋转。有人知道这个问题是什么呢?谢谢你!

答案(3)

darova
darova 2020年2月18日
如果你打开(Ctrl + D) 旋转 函数结束时你会发现这些线:
如果比较字符串(t)“表面”)| | strcmp (t)“行”)
集(h(我),“xdata”newx,“ydata”newy,“zdata”,newz);
elseif比较字符串(t)“补丁”)
集(h(我),“顶点”(newx newy newz]);
elseif比较字符串(t)“文本”)
集(h(我),“位置”,(newx newy newz])
elseif比较字符串(t)“图像”)
集(h(我),“xdata”newx,“ydata”newy)
结束
当你画一个 矩形
h =矩形(“位置”(x_left xc-height / 2 + 2 * mass_height_diff w_chassis + 1,高度),“EdgeColor”,“红色”);
get (h,“类型”)
ans =
矩形
正如你所看到的没有理由 矩形 。也许这就是方法 旋转 没有工作
所以我用简单 情节
x_left = 3;
xc = 1;
身高= 2;
mass_height_diff = 5;
w_chassis = 1;
身高= 5;
x = [x_left
w_chassis + 1];
y = [xc-height / 2 + 2 * mass_height_diff
高度);
h =情节([x x (1) (2) (2) (1) x (1)]。
[y y y (1) (1) (2) (2) y (1)]);
旋转(h, (0 0 1), 45)
5个评论
darova
darova 2020年2月19日
编辑:darova 2020年2月19日
也许手动旋转?
x = [x_left
w_chassis + 1];
y = [xc-height / 2 + 2 * mass_height_diff
高度);
x = x ([1 2 2 1 1]);
y = y ([1 1 2 2 1]);
一个= 15;
R = [cosd (a)信德(a);信德(a) cosd (a)];%旋转矩阵
v = R * [x(:)的意思(x) y(:)的意思(y)] ';%中心和矩形旋转
x = v(1:) +意味着(x);%恢复原始位置
:y = v(2日)+意味着(y);
情节(x, y,“k”);
编辑:旋转矩阵

登录置评。


内森出差费
内森出差费 2020年2月19日
更新:
我能让它工作使用下面的代码:
g = hgtransform;
r =矩形(“父”,g,“位置”(x_left xc + 2 * mass_height_diff, w_chassis + 1,高度),“EdgeColor”,“黑”,“线宽”,综合成绩);
g.Matrix = makehgtform (“zrotate”θ);
然而,有没有办法让它旋转矩形的中心呢?现在它是旋转左下角我相信。谢谢你!

崔
2022年3月5日
我推荐你使用的 polyshape 对旋转的矩形,有许多对象的函数可以满足您的要求。

类别

找到更多的在3 d场景控制帮助中心文件交换

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!