41 lines
1.6 KiB
Matlab
41 lines
1.6 KiB
Matlab
function [obj, f] = plot(obj, ind, f)
|
|
arguments (Input)
|
|
obj (1, 1) {mustBeA(obj, 'agent')};
|
|
ind (1, :) double = NaN;
|
|
f (1, 1) {mustBeA(f, 'matlab.ui.Figure')} = figure;
|
|
end
|
|
arguments (Output)
|
|
obj (1, 1) {mustBeA(obj, 'agent')};
|
|
f (1, 1) {mustBeA(f, 'matlab.ui.Figure')};
|
|
end
|
|
|
|
% Create axes if they don't already exist
|
|
f = firstPlotSetup(f);
|
|
|
|
% Plot points representing the agent position
|
|
hold(f.Children(1).Children(end), "on");
|
|
o = scatter3(f.Children(1).Children(end), obj.pos(1), obj.pos(2), obj.pos(3), 'filled', 'ko', 'SizeData', 25);
|
|
hold(f.Children(1).Children(end), "off");
|
|
|
|
% Check if this is a tiled layout figure
|
|
if strcmp(f.Children(1).Type, 'tiledlayout')
|
|
% Add to other perspectives
|
|
o = [o; copyobj(o(1), f.Children(1).Children(2))];
|
|
o = [o; copyobj(o(1), f.Children(1).Children(3))];
|
|
o = [o; copyobj(o(1), f.Children(1).Children(4))];
|
|
end
|
|
|
|
obj.scatterPoints = o;
|
|
|
|
% Plot collision geometry
|
|
[obj.collisionGeometry, f] = obj.collisionGeometry.plotWireframe(ind, f);
|
|
|
|
% Plot communications geometry
|
|
if obj.plotCommsGeometry
|
|
[obj.commsGeometry, f] = obj.commsGeometry.plotWireframe(ind, f);
|
|
end
|
|
|
|
% Plot FOV geometry
|
|
maxAlt = f.Children(1).Children(end).ZLim(2); % to avoid scaling the FOV geometry as the sim runs, let's just make it really big and hide the excess under the floor of the domain. Check the domain altitude to figure out how big it needs to be to achieve this deception.
|
|
[obj.fovGeometry, f] = obj.fovGeometry.plot(ind, f, maxAlt);
|
|
end |