改变颜色的结构定义为对象
7视图(30天)
显示旧的评论
接受的答案
格雷格·迪翁
2021年3月24日
编辑:格雷格·迪翁
2021年3月24日
%的例子:动画平滑插值旋转
从-30度偏航%,20度,10度
% 60度偏航,10度音高和5度。
% - - - - - - -
%的端点创建旋转。
函数e = [-30 20 10;60 10 5]);
%端点转换为一个四元数。
q =四元数(e,“欧拉”,“ZYX股票”,“帧”);
% upsample以100分通过球形线性插值
q = slerp (q q (1), (2), linspace (0, 1100) ');
%创建一个戏剧情节
tp = theaterPlot (“XLimit”(2 - 2),“YLimit”(2 - 2),“ZLimit”(2 - 2));
%添加一个方向绘图仪的戏剧情节
op = orientationPlotter (tp,“DisplayName的”,“身体轴”);
%动画旋转的变化
为i = 1:元素个数(qs)
plotOrientation (op, qs (i));
drawnow;
结束
策划者应该工作的很好与其他典型处理图形命令需要细的粒度控制。您可以获得现有theaterPlot使用的轴通过其“父”属性。否则就像平时一样创建一个轴(通过
轴
)。我将结合使用
hgtransform
,
makehgtform
,
补丁
达到你的预期效果。如果你想看到所有这些操作的同时你可以做一些类似:
sc = trackingScenario;
多维数据集=平台(sc);
多维数据集。尺寸=结构(“长度”5,“宽度”5,“高度”5,“OriginOffset”,0 0 0);
%创建一个戏剧情节
tp = theaterPlot (“XLimit”-10年[10],“YLimit”-10年[10],“ZLimit”,-10年[10]);
%添加一个方向绘图仪的戏剧情节
op = orientationPlotter (tp,“DisplayName的”,“身体轴”);
%发现每张脸的坐标
L = cube.Dimensions.Length;
W = cube.Dimensions.Width;
H = cube.Dimensions.Height;
抵消= cube.Dimensions.OriginOffset;
%顶点下令逆时针从外部观察到的
%向前,向后,向左,
f = [1 1 1;1 1 1;1 1 1;1 1 1]。* (L W H) / 2 -抵消;
r = [1 1 1;1 1 1;1 1 1 1 1 1]。* (L W H) / 2 -抵消;
d = [1 1 1; 1 1 1; 1 1 1;1 1 1]。* (L W H) / 2 -抵消;
b = [1 1 1; 1 1 1; 1 1 1; 1 1 1]。* (L W H) / 2 -抵消;
l = [1 1 1; 1 1 1;1 1 1;1 1 1]。* (L W H) / 2 -抵消;
u = [1 1 1;1 1 1;1 1 1 1 1 1]。* (L W H) / 2 -抵消;
%创建一个变换对象,使补丁
hTransform = hgtransform (tp.Parent);
补丁(hTransform f (: 1), f (:, 2), f (:, 3),“红色”,“FaceAlpha”6);
补丁(hTransform左(:1),l (:, 2), l (:, 3),“黄色”,“FaceAlpha”6);
补丁(hTransform u (: 1), u (:, 2), u (:, 3),“青色”,“FaceAlpha”6);
补丁(hTransform, b (: 1), b (:, 2), b (:, 3),“红色”,“FaceAlpha”6);
补丁(hTransform r (: 1)、r (:, 2), r (:, 3),“绿色”,“FaceAlpha”6);
补丁(hTransform d (: 1)、d (:, 2)、d (:, 3),“蓝”,“FaceAlpha”6);
%的端点创建旋转。
函数e = [-30 20 10;60 10 5]);
%端点转换为一个四元数。
q =四元数(e,“欧拉”,“ZYX股票”,“帧”);
% upsample以100分通过球形线性插值
q = slerp (q q (1), (2), linspace (0, 1100) ');
%动画旋转的变化
为i = 1:元素个数(qs)
位置= (0 0 0);
plotOrientation (op、qs (i)、位置);
% hgtransform使用“点”的惯例
M =眼睛(4);
米(1:3,1:3)= rotmat (qs(我),“点”);
hTransform。矩阵= makehgtform (“翻译”、位置)* M;
drawnow;
结束
你可以尝试不同的值“位置”。
希望这可以帮助!