-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPlotTargetRegion.m
66 lines (50 loc) · 1.89 KB
/
PlotTargetRegion.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
function PlotTargetRegion(TargetRegion)
nObj = numel(TargetRegion.lb);
if nObj == 2
for i = 1 : numel(TargetRegion)
lb = TargetRegion(i).lb;
ub = TargetRegion(i).ub;
plot([lb(1) ub(1) ub(1) lb(1) lb(1)], [lb(2) lb(2) ub(2) ub(2) lb(2)], 'm')
hold on
end
else
angle = [180 0 0] * pi / 180;
quaternion = angle2quat(angle(1),angle(2),angle(3));
for i = 1 : numel(TargetRegion)
lb = TargetRegion(i).lb;
ub = TargetRegion(i).ub;
A = [lb(1), lb(2), lb(3)];
B = [ub(1), lb(2), lb(3)];
C = [ub(1), ub(2), lb(3)];
D = [lb(1), ub(2), lb(3)];
E = [lb(1), lb(2), ub(3)];
F = [ub(1), lb(2), ub(3)];
G = [ub(1), ub(2), ub(3)];
H = [lb(1), ub(2), ub(3)];
edges_bottom = [A; B; C; D; A];
edges_top = [E; F; G; H; E];
edges_bottom = quatrotate(quaternion, edges_bottom);
edges_top = quatrotate(quaternion, edges_top);
plot3(edges_bottom(:, 1), edges_bottom(:, 2), edges_bottom(:, 3), 'm');
hold on
plot3(edges_top(:, 1), edges_top(:, 2), edges_top(:, 3), 'm');
hold on
AE = [A; E];
BF = [B; F];
CG = [C; G];
DH = [D; H];
AE = quatrotate(quaternion, AE);
BF = quatrotate(quaternion, BF);
CG = quatrotate(quaternion, CG);
DH = quatrotate(quaternion, DH);
plot3(AE(:, 1), AE(:, 2), AE(:, 3), 'm')
hold on
plot3(BF(:, 1), BF(:, 2), BF(:, 3), 'm')
hold on
plot3(CG(:, 1), CG(:, 2), CG(:, 3), 'm')
hold on
plot3(DH(:, 1), DH(:, 2), DH(:, 3), 'm')
end
end
hold off;
end