Сетка представления самолета
возвращает mesh
= tracking.scenario.airplaneMeshextendedObjectMesh
объект, определяющий mesh самолета, которая может использоваться со trackingScenario
объект.
Создайте mesh самолета.
mesh = tracking.scenario.airplaneMesh;
Визуализируйте mesh.
ax = axes('ZDir','reverse'); show(mesh,ax); view(30,50);
Создайте объект сценария отслеживания и объект mesh самолета.
scene = trackingScenario; mesh = tracking.scenario.airplaneMesh;
Создайте две башенные платформы.
% Create the first tower. tower = platform(scene); h = 50; tower.Trajectory.Position = [0 0 -h]; tower.Dimensions = struct('Length',10,'Width',10,'Height',h,'OriginOffset',[0 0 -h/2]); tower.Sensors = monostaticLidarSensor('SensorIndex',1,... 'MaxRange',200,... 'HasINS',true,... 'DetectionCoordinates','scenario',... 'AzimuthLimits',[-75 75],... 'ElevationLimits',[-10 30]); % Create the second tower. tower2 = platform(scene); h = 50; tower2.Trajectory.Position = [0 500 -h]; tower2.Dimensions = struct('Length',10,'Width',10,'Height',h,'OriginOffset',[0 0 -h/2]); tower2.Sensors = monostaticLidarSensor('SensorIndex',2,... 'MaxRange',200,... 'HasINS',true,... 'DetectionCoordinates','scenario',... 'AzimuthLimits',[-75 75],... 'ElevationLimits',[-10 30]);
Создайте цель самолета со связанным mesh.
airplane = platform(scene); airplane.Mesh = mesh; % Set the dimensions of the plane which automatically adjust the size of the mesh. airplane.Dimensions = struct('Length',40,... 'Width',40,... 'Height',12.5,... 'OriginOffset',[0 0 12.5/2]);
Создайте траекторию посадки для плоскости.
x = 50*ones(10,1); y = linspace(-500,1000,10)'; yToLand = max(0,-y); z = -1e4*(2.*(yToLand./50e3).^3 + 3*(yToLand./50e3).^2); wps = [x y z]; toa = linspace(0,30,10)'; traj = waypointTrajectory(wps,toa); airplane.Trajectory = traj;
Создайте плоттер, чтобы визуализировать сценарий.
lp = scatter3(nan,nan,nan,6,nan,'o','DisplayName','Lidar data'); tp = theaterPlot('Parent',lp.Parent,... 'XLimits',[0 100],... 'YLimits',[-500 1000],... 'ZLimits',[-75 0]); lp.Parent.ZDir = 'reverse'; view(lp.Parent,169,5); pp = platformPlotter(tp,'DisplayName','Platforms','Marker','^'); cp = coveragePlotter(tp,'DisplayName','Lidar coverage'); hold on;
Продвигайтесь симуляции, генерируйте данные и визуализируйте результаты.
scene.UpdateRate = 0; % Automatic update rate while advance(scene) % Generate point cloud. ptCloud = lidarDetect(scene); % Obtain coverage configurations. cfgs = coverageConfig(scene); % Plot coverage. cp.plotCoverage(cfgs); % Plot platforms. platPoses = platformPoses(scene); pos = vertcat(platPoses.Position); mesh = cellfun(@(x)x.Mesh,scene.Platforms); orient = vertcat(platPoses.Orientation); pp.plotPlatform(pos,mesh,orient); % Concatenate all point clouds. s = vertcat(ptCloud{:}); % Plot lidar data. set(lp,'XData',s(:,1),... 'YData',s(:,2),... 'ZData',s(:,3),... 'CData',s(:,3)); drawnow; end
mesh
- Сетка самолетаextendedObjectMesh
объектСамолет mesh, возвращенный как extendedObjectMesh
объект, определяющий mesh самолета.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.