camheading

Установите или запросите угол рыскания камеры для географического глобуса

Описание

Установите курс и режим

пример

camheading(g,heading) устанавливает угол рыскания камеры для заданного географического глобуса. Установка угла рыскания смещает камеру влево или вправо. Для получения дополнительной информации о том, как повороты камеры влияют на представление глобуса, смотрите «Как ориентация камеры влияет на представление глобуса».

Camera with double-headed arrow in front of lens, pointing left and right

camheading(g,'auto') устанавливает курс камеры в автоматический режим, позволяя географическому глобусу определять угол рыскания на основе нанесенных на график данных. Режим по умолчанию является автоматическим при создании географического глобуса. Если взаимодействовать с земным шаром с помощью мыши, то режим переключается на автоматический.

пример

camheading(g,'manual') устанавливает курс камеры в ручной режим, указывая, что географический глобус сохраняет угол рыскания при изменении нанесенных на график данных. Если вы меняете угол рыскания используя camheading function, затем режим переключается на ручной.

Заголовок запроса

пример

outHeading = camheading(g) возвращает угол рыскания камеры.

outHeading = camheading(___) устанавливает угол рыскания или режим, а затем возвращает угол рыскания камеры. Вернуть угол рыскания можно с помощью любой комбинации входных параметров из предыдущих синтаксисов.

Примеры

свернуть все

Создайте географический глобус. Установите камеру около горы Килиманджаро путем определения широты, долготы и эллипсоидальной высоты. Установите угол тангажа равным 0 степеням, так чтобы камера указывала через вершину.

uif = uifigure;
g = geoglobe(uif);
campos(g,-3.1519,37.3561,5500)
campitch(g,0)

По умолчанию угол рыскания равен 360 степеням, что эквивалентно углу рыскания, равным 0 степеням. Переместить камеру вправо путем изменения угла рыскания на 15 степени.

camheading(g,15)

Создайте географический глобус. Поместите камеру в верхней части горы Вашингтон путем определения широты, долготы и эллипсоидальной высоты. Измените угол тангажа так, чтобы камера обращалась к горизонту, а не вниз.

uif = uifigure;
g = geoglobe(uif);
campos(g,44.2700,-71.3038,2000)
campitch(g,0)

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

for heading = 0:5:180
    camheading(g,heading)
    drawnow
end

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

Создайте географический глобус. Перейдите в интересующую область с помощью мыши или жестов. В данном примере перейдите в область вокруг Гавайев.

uif = uifigure;
g = geoglobe(uif);

Bird's-eye view of Hawaii

Запросите широту, долготу и эллипсоидальную высоту камеры и присвойте каждую переменной.

[camlat,camlon,camh] = campos(g)
camlat =

   18.1781


camlon =

 -155.9297


camh =

   6.6664e+04

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

heading = camheading(g)
pitch = campitch(g)
roll = camroll(g)
heading =

   16.7613


pitch =

  -24.1507


roll =

  359.9977

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

uif2 = uifigure;
g2 = geoglobe(uif2);
campos(g2,camlat,camlon,camh)
camheading(g2,heading)
campitch(g2,pitch)
camroll(g2,roll)

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

Импортируйте образец маршрута по дорогам в Массачусетсе используя gpxread функция. Создать географический глобус с дорожной картой и без данных о местности. Сохраните настройки основной карты и местности при помощи hold функция. Затем перейдите в район недалеко от Восточного Массачусетса, используя мышь.

track = gpxread('sample_tracks.gpx','Index',2);
lat = track.Latitude;
lon = track.Longitude;
height = track.Elevation;

uif = uifigure;
g = geoglobe(uif,'Basemap','streets','Terrain','none');
hold(g,'on')

Map of an area around Eastern Massachusetts with labeled cities and roads

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

campos(g,'manual')
camheight(g,'manual')
camheading(g,'manual')
campitch(g,'manual')
camroll(g,'manual')
geoplot3(g,lat,lon,height,'LineWidth',3)

The same map with a blue line plotted along several roads

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

свернуть все

Географический глобус, заданный как GeographicGlobe объект.[1]

Угол рыскания камеры, заданный как скалярное значение в области значений [ -360 , 360 ] степеней.

Подробнее о

свернуть все

Как ориентация камеры влияет на представление глобуса

Значения курса, тангажа и углов крена камеры влияют на представление географического глобуса. Mapping Toolbox™ ссылается на эти значения в глобусе с помощью северо-восточной системы координат (NED). В результате, когда курс, тангаж и углы крена камеры равны нулю, камера находится на плоскости, которая параллельна касательной плоскости земного шара в текущей широте и долготе. Дополнительные сведения о системах координат NED см. в разделе Выбор 3-D системы координат.

A camera positioned far above the Earth. The camera has three axes labeled xNorth, yEast, and zDown.

Измените вид географического глобуса путем изменения курса, тангажа и углов крена камеры:

  • Заголовок - Вращайте камеру вокруг ее z оси, которая смещает вид влево или вправо. Переместить вид вправо можно путем увеличения угла рыскания.

  • Тангаж - вращайте камеру вокруг ее y оси, которая наклоняет вид вверх или вниз. Наклоните вид вверх путем увеличения угла тангажа.

  • Крен - Вращайте камеру вокруг своей x оси, которая вращает камеру вокруг своего объектива. Вращайте вид против часовой стрелки путем увеличения угла крена.

A camera with three axes labeled x, y, and z. The origin sits at the center of the camera lens.

Совет

  • Когда угол тангажа близок к -90 (по умолчанию) или 90 градусам, камера теряет одну вращательную степень свободы. В результате при изменении угла крена может измениться угол рыскания. Это явление называется gimbal lock. Чтобы избежать эффектов карданной блокировки, используйте camheading функцию вместо функции camroll функция.

Введенный в R2020b

[1] Выравнивание контуров и меток областей является представлением функции, предоставляемой поставщиками данных, и не подразумевает одобрения MathWorks®.