fieldOfView

Визуализируйте поле зрения конического датчика

    Описание

    пример

    fieldOfView(sensor) добавляет FieldOfView возразите против заданного конического датчика, и чертит контуры на Земле. Каждый контур представляет поле зрения конического датчика в sensor на основе текущего состояния сценария.

    Местоположения в контуре в поле зрения. Если никакое средство просмотра не открыто, новое средство просмотра запускается, и контуры поля зрения показывают в открытом средстве просмотра. Если средство просмотра уже открыто, контуры поля зрения добавляются к нему. Контуры являются линиями пересечения поверхности земли и конуса поля зрения. Половина угла конуса поля зрения равна свойству MaxViewAngle конического датчика, и осью конуса является z - ось (или опорное направление) конического датчика. Вершина конуса расположена в положении конического датчика. Конус становится более широким вдоль положительного тела z - ось конического датчика.

    fieldOfView(sensor,Name,Value) задает опции при помощи одних или нескольких аргументов name-value.

    fov = fieldOfView(___) возвращает вектор из указателей на добавленные графические объекты поля зрения. Задайте любую входную комбинацию от предыдущих синтаксисов.

    Примеры

    свернуть все

    Создайте спутниковый сценарий со временем начала от 15 июня 2021 8:55:00 UTC и время остановки пять дней спустя. Установите шаг расчета симуляции на 60 секунды.

    startTime = datetime(2021,6,21,8,55,0);
    stopTime = startTime + days(5);
    sampleTime = 60;                                      % seconds
    sc = satelliteScenario(startTime,stopTime,sampleTime)
    sc = 
      satelliteScenario with properties:
    
             StartTime: 21-Jun-2021 08:55:00
              StopTime: 26-Jun-2021 08:55:00
            SampleTime: 60
               Viewers: [0x0 matlabshared.satellitescenario.Viewer]
            Satellites: [1x0 matlabshared.satellitescenario.Satellite]
        GroundStations: [1x0 matlabshared.satellitescenario.GroundStation]
              AutoShow: 1
    
    

    Добавьте спутник в сценарий с помощью Кеплеровских орбитальных элементов.

    semiMajorAxis = 7878137;                                                                    % meters
    eccentricity = 0;
    inclination = 50;                                                                           % degrees
    rightAscensionOfAscendingNode = 0;                                                          % degrees
    argumentOfPeriapsis = 0;                                                                    % degrees
    trueAnomaly = 50;                                                                           % degrees
    sat = satellite(sc,semiMajorAxis,eccentricity,inclination,rightAscensionOfAscendingNode, ...
        argumentOfPeriapsis,trueAnomaly)
    sat = 
      Satellite with properties:
    
                   Name:  Satellite 1
                     ID:  1
         ConicalSensors:  [1x0 matlabshared.satellitescenario.ConicalSensor]
                Gimbals:  [1x0 matlabshared.satellitescenario.Gimbal]
           Transmitters:  [1x0 satcom.satellitescenario.Transmitter]
              Receivers:  [1x0 satcom.satellitescenario.Receiver]
               Accesses:  [1x0 matlabshared.satellitescenario.Access]
            GroundTrack:  [1x1 matlabshared.satellitescenario.GroundTrack]
                  Orbit:  [1x1 matlabshared.satellitescenario.Orbit]
        OrbitPropagator:  sgp4
            MarkerColor:  [1 0 0]
             MarkerSize:  10
              ShowLabel:  true
         LabelFontColor:  [1 0 0]
          LabelFontSize:  15
    
    

    Добавьте наземную станцию, которая представляет местоположение, которое будет сфотографировано к сценарию.

    gs = groundStation(sc,"Name","Location To Photograph", ...
        "Latitude",42.3001,"Longitude",-71.3504)               % degrees
    gs = 
      GroundStation with properties:
    
                     Name:  Location To Photograph
                       ID:  2
                 Latitude:  42.3 degrees
                Longitude:  -71.35 degrees
                 Altitude:  0 meters
        MinElevationAngle:  0 degrees
           ConicalSensors:  [1x0 matlabshared.satellitescenario.ConicalSensor]
                  Gimbals:  [1x0 matlabshared.satellitescenario.Gimbal]
             Transmitters:  [1x0 satcom.satellitescenario.Transmitter]
                Receivers:  [1x0 satcom.satellitescenario.Receiver]
                 Accesses:  [1x0 matlabshared.satellitescenario.Access]
              MarkerColor:  [0 1 1]
               MarkerSize:  10
                ShowLabel:  true
           LabelFontColor:  [0 1 1]
            LabelFontSize:  15
    
    

    Добавьте карданов подвес в спутник. Можно регулировать этот карданов подвес независимо от спутника.

    g = gimbal(sat)
    g = 
      Gimbal with properties:
    
                    Name:  Gimbal 3
                      ID:  3
        MountingLocation:  [0; 0; 0] meters
          MountingAngles:  [0; 0; 0] degrees
          ConicalSensors:  [1x0 matlabshared.satellitescenario.ConicalSensor]
            Transmitters:  [1x0 satcom.satellitescenario.Transmitter]
               Receivers:  [1x0 satcom.satellitescenario.Receiver]
    
    

    Отследите местоположение, которое будет сфотографировано с помощью карданова подвеса.

    pointAt(g,gs);

    Добавьте конический датчик в карданов подвес. Этот датчик представляет камеру. Установите поле зрения на 60 градусов.

    camSensor = conicalSensor(g,"MaxViewAngle",60)
    camSensor = 
      ConicalSensor with properties:
    
                    Name:  Conical sensor 4
                      ID:  4
        MountingLocation:  [0; 0; 0] meters
          MountingAngles:  [0; 0; 0] degrees
            MaxViewAngle:  60 degrees
                Accesses:  [1x0 matlabshared.satellitescenario.Access]
             FieldOfView:  [0x0 matlabshared.satellitescenario.FieldOfView]
    
    

    Добавьте анализ доступа между камерой и местоположением, которое будет сфотографировано. Доступ добавляется к коническому датчику.

    ac = access(camSensor,gs)
    ac = 
      Access with properties:
    
        Sequence:  [4 2]
        LineWidth:  1
        LineColor:  [0.5 0 1]
    
    

    Визуализируйте поле зрения камеры при помощи Спутникового Средства просмотра Сценария.

    v = satelliteScenarioViewer(sc);
    fieldOfView(camSensor);

    Определите интервалы, во время которых камера видит географический сайт.

    t = accessIntervals(ac)
    t=35×8 table
              Source                   Target             IntervalNumber         StartTime                EndTime           Duration    StartOrbit    EndOrbit
        __________________    ________________________    ______________    ____________________    ____________________    ________    __________    ________
    
        "Conical sensor 4"    "Location To Photograph"           1          21-Jun-2021 10:38:00    21-Jun-2021 10:55:00      1020           1            2   
        "Conical sensor 4"    "Location To Photograph"           2          21-Jun-2021 12:36:00    21-Jun-2021 12:58:00      1320           2            3   
        "Conical sensor 4"    "Location To Photograph"           3          21-Jun-2021 14:37:00    21-Jun-2021 15:01:00      1440           3            4   
        "Conical sensor 4"    "Location To Photograph"           4          21-Jun-2021 16:41:00    21-Jun-2021 17:04:00      1380           5            5   
        "Conical sensor 4"    "Location To Photograph"           5          21-Jun-2021 18:44:00    21-Jun-2021 19:07:00      1380           6            6   
        "Conical sensor 4"    "Location To Photograph"           6          21-Jun-2021 20:46:00    21-Jun-2021 21:08:00      1320           7            7   
        "Conical sensor 4"    "Location To Photograph"           7          21-Jun-2021 22:50:00    21-Jun-2021 23:04:00       840           8            8   
        "Conical sensor 4"    "Location To Photograph"           8          22-Jun-2021 09:51:00    22-Jun-2021 10:02:00       660          13           13   
        "Conical sensor 4"    "Location To Photograph"           9          22-Jun-2021 11:46:00    22-Jun-2021 12:07:00      1260          14           15   
        "Conical sensor 4"    "Location To Photograph"          10          22-Jun-2021 13:46:00    22-Jun-2021 14:10:00      1440          15           16   
        "Conical sensor 4"    "Location To Photograph"          11          22-Jun-2021 15:50:00    22-Jun-2021 16:13:00      1380          16           17   
        "Conical sensor 4"    "Location To Photograph"          12          22-Jun-2021 17:53:00    22-Jun-2021 18:16:00      1380          18           18   
        "Conical sensor 4"    "Location To Photograph"          13          22-Jun-2021 19:55:00    22-Jun-2021 20:18:00      1380          19           19   
        "Conical sensor 4"    "Location To Photograph"          14          22-Jun-2021 21:58:00    22-Jun-2021 22:16:00      1080          20           20   
        "Conical sensor 4"    "Location To Photograph"          15          23-Jun-2021 10:56:00    23-Jun-2021 11:16:00      1200          26           27   
        "Conical sensor 4"    "Location To Photograph"          16          23-Jun-2021 12:56:00    23-Jun-2021 13:19:00      1380          27           28   
          ⋮
    
    

    Вычислите максимум пересматривают время в часах.

    startTimes = t.StartTime;
    endTimes = t.EndTime;
    revisitTimes = hours(startTimes(2:end) - endTimes(1:end-1));
    maxRevisitTime = max(revisitTimes)                             % hours
    maxRevisitTime = 12.6667
    

    Визуализируйте пересмотреть времена, который фотографирует местоположение.

    play(sc);

    Входные параметры

    свернуть все

    Конический датчик в виде ConicalSensor объект.

    Аргументы name-value

    Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

    Пример: 'LineWidth',2.5 устанавливает ширину линии поля зрения к 2,5 пикселям.

    Спутниковое средство просмотра сценария в виде скаляра, вектора-строки или массива satelliteScenarioViewer объекты.

    Количество точек контура раньше чертило контур поля зрения в виде целого числа, больше, чем или равный 4.

    Типы данных: double

    Визуальная ширина поля зрения очерчивает в пикселях в виде скаляра в области значений (0 10].

    Ширина линии не может быть более тонкой, чем ширина пикселя. Если вы устанавливаете ширину линии на значение, которое меньше ширины пикселя в вашей системе, отображения линии как один пиксель шириной.

    Цвет поля зрения очерчивает в виде триплета RGB, шестнадцатеричного цветового кода, названия цвета или краткого названия.

    Для пользовательского цвета задайте триплет RGB или шестнадцатеричный цветовой код.

    • Триплет RGB представляет собой трехэлементный вектор-строку, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должна быть в области значений [0,1]; например, [0.4 0.6 0.7].

    • Шестнадцатеричный цветовой код является вектором символов или строковым скаляром, который запускается с символа хеша (#) сопровождаемый тремя или шестью шестнадцатеричными цифрами, которые могут лежать в диапазоне от 0 к F. Значения не являются чувствительными к регистру. Таким образом, цветовые коды '#FF8800', '#ff8800', '#F80', и '#f80' эквивалентны.

    Кроме того, вы можете задать имена некоторых простых цветов. Эта таблица приводит опции именованного цвета, эквивалентные триплеты RGB и шестнадцатеричные цветовые коды.

    Название цветаКраткое названиеТриплет RGBШестнадцатеричный цветовой кодВнешний вид
    'red''r'[1 0 0]'#FF0000'

    Sample of the color red

    'green''g'[0 1 0]'#00FF00'

    Sample of the color green

    'blue''b'[0 0 1]'#0000FF'

    Sample of the color blue

    'cyan' 'c'[0 1 1]'#00FFFF'

    Sample of the color cyan

    'magenta''m'[1 0 1]'#FF00FF'

    Sample of the color magenta

    'yellow''y'[1 1 0]'#FFFF00'

    Sample of the color yellow

    'black''k'[0 0 0]'#000000'

    Sample of the color black

    'white''w'[1 1 1]'#FFFFFF'

    Sample of the color white

    'none'Не применяетсяНе применяетсяНе применяетсяНет цвета

    Вот являются триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию MATLAB® использование во многих типах графиков.

    Триплет RGBШестнадцатеричный цветовой кодВнешний вид
    [0 0.4470 0.7410]'#0072BD'

    Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

    [0.8500 0.3250 0.0980]'#D95319'

    Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

    [0.9290 0.6940 0.1250]'#EDB120'

    Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

    [0.4940 0.1840 0.5560]'#7E2F8E'

    Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

    [0.4660 0.6740 0.1880]'#77AC30'

    Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

    [0.3010 0.7450 0.9330]'#4DBEEE'

    Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

    [0.6350 0.0780 0.1840]'#A2142F'

    Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

    Пример: 'blue'

    Пример: [0 0 1]

    Пример: '#0000FF'

    Выходные аргументы

    свернуть все

    Поле зрения конического датчика, возвращенного как вектор-строка из FieldOfView объекты.

    Введенный в R2021a