Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Processing:Справочник языка Processing/perspective()

Материал из Онлайн справочника
Перейти к: навигация, поиск


Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


perspective() [1]

Обозначение

perspective()

Описание

Переключает камеру в режим перспективы, добавляя в сцену перспективное сокращение. В результате объекты, расположенные вдали, начинают казаться меньше, чем те, что находятся ближе к камере. Параметры perspective() задают размеры рабочей области, имеющей форму усеченной пирамиды. Объекты в ближней части рабочей области будут иметь свой настоящий размер, а те, что находятся дальше, будут отображены более маленькими. Эта проекция более точно симулирует перспективу реального мира, чем ортографическая проекция.

Если задать метод perspective() без параметров, то значения для них будут выставлены по умолчанию. Впрочем, если все же воспользоваться параметрами fovy, aspect, zNear и zFar, это даст больше контроля над рабочей областью.

По умолчанию параметры perspective() выглядят так: perspective(PI/3.0, width/height, cameraZ/10.0, cameraZ*10.0), где cameraZ – это ((height/2.0) / tan(PI*60.0/360.0)).

Синтаксис

perspective()
perspective(fovy, aspect, zNear, zFar)

Параметры

fovy   – угол поля зрения (в радианах), для вертикальных плоскостей. Тип данных – float
aspect – соотношение ширины и высоты. Тип данных – float
zNear  – координата Z ближней плоскости рабочей области. Тип данных – float
zFar   – координата Z дальней плоскости рабочей области. Тип данных – float

Возвращаемое значение

void

Пример

Processing perspective 0.png


  1. // задаем для перспективы значения по умолчанию:
  2. size(100, 100, P3D);
  3. noFill();
  4. float fov = PI/3.0;
  5. float cameraZ = (height/2.0) / tan(fov/2.0);
  6. perspective(fov, float(width)/float(height),
  7.             cameraZ/10.0, cameraZ*10.0);
  8. translate(50, 50, 0);
  9. rotateX(-PI/6);
  10. rotateY(PI/3);
  11. box(45);

См.также

Внешние ссылки

  1. processing.org - perspective()