added sensor tilting and rf sensor sim test cases

This commit is contained in:
2026-05-03 14:32:53 -07:00
parent e950d43fc8
commit 0e39e0037d
13 changed files with 154 additions and 29 deletions
+5 -3
View File
@@ -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;
+16 -12
View File
@@ -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
View File
@@ -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);