added sensor tilting and rf sensor sim test cases
This commit is contained in:
@@ -6,9 +6,11 @@ classdef cone
|
||||
label = "";
|
||||
|
||||
% Spatial
|
||||
center = NaN;
|
||||
radius = NaN;
|
||||
height = NaN;
|
||||
center = NaN;
|
||||
radius = NaN;
|
||||
height = NaN;
|
||||
tilt = 0; % degrees, 0=nadir 90=horizon
|
||||
azimuth = 0; % degrees, 0=+Y 90=+X clockwise
|
||||
|
||||
% Plotting
|
||||
surface;
|
||||
|
||||
@@ -1,19 +1,23 @@
|
||||
function obj = initialize(obj, center, radius, height, tag, label)
|
||||
function obj = initialize(obj, center, radius, height, tag, label, tilt, azimuth)
|
||||
arguments (Input)
|
||||
obj (1, 1) {mustBeA(obj, "cone")};
|
||||
center (1, 3) double;
|
||||
radius (1, 1) double;
|
||||
height (1, 1) double;
|
||||
tag (1, 1) REGION_TYPE = REGION_TYPE.INVALID;
|
||||
label (1, 1) string = "";
|
||||
obj (1, 1) {mustBeA(obj, "cone")};
|
||||
center (1, 3) double;
|
||||
radius (1, 1) double;
|
||||
height (1, 1) double;
|
||||
tag (1, 1) REGION_TYPE = REGION_TYPE.INVALID;
|
||||
label (1, 1) string = "";
|
||||
tilt (1, 1) double = 0;
|
||||
azimuth (1, 1) double = 0;
|
||||
end
|
||||
arguments (Output)
|
||||
obj (1, 1) {mustBeA(obj, "cone")};
|
||||
end
|
||||
|
||||
obj.center = center;
|
||||
obj.radius = radius;
|
||||
obj.height = height;
|
||||
obj.tag = tag;
|
||||
obj.label = label;
|
||||
obj.center = center;
|
||||
obj.radius = radius;
|
||||
obj.height = height;
|
||||
obj.tag = tag;
|
||||
obj.label = label;
|
||||
obj.tilt = tilt;
|
||||
obj.azimuth = azimuth;
|
||||
end
|
||||
+12
-1
@@ -20,7 +20,18 @@ function [obj, f] = plot(obj, ind, f, maxAlt)
|
||||
|
||||
% Scale to match height
|
||||
Z = Z * maxAlt;
|
||||
|
||||
|
||||
% Rotate mesh around apex to match boresight tilt and azimuth.
|
||||
% Apex sits at [0, 0, maxAlt] before center translation.
|
||||
% Convention: tilt 0=nadir, 90=horizon; azimuth 0=+Y, 90=+X, clockwise.
|
||||
Ry = [cosd(obj.tilt), 0, -sind(obj.tilt); 0, 1, 0; sind(obj.tilt), 0, cosd(obj.tilt)];
|
||||
Rz = [sind(obj.azimuth), -cosd(obj.azimuth), 0; cosd(obj.azimuth), sind(obj.azimuth), 0; 0, 0, 1];
|
||||
R = Rz * Ry;
|
||||
pts = R * [X(:)'; Y(:)'; Z(:)' - maxAlt];
|
||||
X = reshape(pts(1, :), size(X));
|
||||
Y = reshape(pts(2, :), size(Y));
|
||||
Z = reshape(pts(3, :) + maxAlt, size(Z));
|
||||
|
||||
% Move to center location
|
||||
X = X + obj.center(1);
|
||||
Y = Y + obj.center(2);
|
||||
|
||||
Reference in New Issue
Block a user