Как Matlab рассчитывает угол обзора камеры? - PullRequest
3 голосов
/ 31 мая 2010

Я использую Matlab для визуализации сцены. Чтобы увеличить сцену, я могу сделать это с помощью eather: - Исправьте положение камеры и камеры и измените вид камеры. - Исправьте цель камеры и угол обзора камеры и перемещайте камеру вдоль линии обзора (определяется положением камеры и целью камеры).

Я знаю, как установить значения положения камеры CameraTarget и viewangle, но я не знаю, как определить оптимальный угол обзора. В автоматическом режиме видимости камеры Matlab рассчитывает наименьший угол обзора, который захватывает всю сцену с заданной позиции камеры. Я ценю любую помощь в понимании этого.

Iman

Ответы [ 2 ]

1 голос
/ 02 июня 2010

В MATLAB угол обзора камеры в основном такой же, как и у функции «увеличения», потому что нет искажения перспективы.Чем меньше угол обзора, тем больше изображение эффективно увеличивается, поскольку область просмотра увеличивается до размера окна рисунка.

Документация 'camva' включает этот пример, который создаетдве кнопки для увеличения / уменьшения масштаба сцены:

% Set the range checking in the callback statements to keep
% the values for the camera view angle in the range greater 
% than zero and less than 180.
uicontrol('Style','pushbutton',...
  'String','Zoom In',...
  'Position',[20 20 60 20],...
  'Callback','if camva <= 1;return;else;camva(camva-1);end');
uicontrol('Style','pushbutton',...
  'String','Zoom Out',...
  'Position',[100 20 60 20],...
  'Callback','if camva >= 179;return;else;camva(camva+1);end');
% Now create a graph to zoom in and out on:
surf(peaks);

Поэтому, если вы хотите увеличить масштаб, отрегулируйте угол обзора.Если вы хотите автоматически «увеличить», чтобы соответствовать всей сцене, установите:

camva('auto');
0 голосов
/ 02 июня 2010

Возможно, я слишком упрощаю это, но разве это не должно сводиться к геометрии? Если у вас есть местоположение вашей камеры относительно вашей сцены, вы должны иметь возможность использовать ширину сцены, чтобы определить угол, необходимый, чтобы включить все это. Например, если ваша сцена шириной 'w' находится на расстоянии 'd' от вашей камеры при просмотре под прямым углом, минимальный требуемый угол обзора может быть получен с использованием закона синусов:

alpha=arcsin(w/sqrt(d^2+(w/2)^2))

Итак, с картинки:

alt text

Ваша камера будет расположена в точке C, а ширина вашей сцены 'w' будет отрезком линии AB. Расстояние «d» от вашей камеры до вашей сцены будет равно линейному сегменту CD, а минимальный угол обзора будет ACB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...