русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Свойства объекта PerspectiveProjection и их соотношения в 3D-графике


Дата добавления: 2015-08-06; просмотров: 1385; Нарушение авторских прав


Перспектива: представление параллельных линий сходящимися в точке схода, чтобы создать иллюзию глубины и расстояния.

flash.geom.PerspectiveProjection - управляет параметрами для преобразования трехмерной геометрии в двухмерный вид.

Класс PerspectiveProjection в пакете flash.geom обеспечивает простой способ применения элементарной перспективы при перемещении экранных объектов в трехмерном пространстве.

Способ отображения трехмерного пространства объектом PerspectiveProjection определяется тремя свойствами:

• fieldOfView;

• projectionCenter;

• focalLength.

При изменении значения свойства fieldOfView автоматически изменяется значение свойства focalLength и наоборот, так как они являются взаимозависимыми.

 

Для вычисления значения focalLength при известном значении fieldOfView используется следующая формула:

focalLength = stageWidth/2 * (cos(fieldOfView/2) / sin(fieldOfView/2)

Свойство fieldOfView указывает угол от 0 до 180 градусов, который определяет степень перспективной проекции. Чем больше значение, тем больше искажение, применяемое к экранному объекту, перемещающемуся по оси Z.

Свойство projectionCenter представляет точку схода в перспективной проекции. Оно применяется как сдвиг относительно точки регистрации по умолчанию (0,0), которая находится в верхнем левом углу рабочей области.

По мере отдаления объекта от пользователя, он наклоняется к точке схода и в конце концов исчезает.

 

По умолчанию свойство projectionCenter указывает центральную точку рабочей области

• Свойство focalLength представляет расстояние между исходной точкой поля зрения (0,0,0) и местоположением экранного объекта на его оси Z.

• Большое фокусное расстояние создает эффект применения телеобъектива с узким видом и сжатым расстоянием между объектами.



• Маленькое фокусное расстояние создает эффект применения угловой линзы с широким видом и большим искажением.

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

 

Создание и примеры использования объектов Matrix3D

Класс Matrix3D позволяет преобразовывать трехмерные точки в рамках координатной плоскости или переносить трехмерные точки из одной координатной плоскости в другую.

 

Задав свойству z экранного объекта числовое значение, можно получить матрицу преобразования этого объекта, используя свойство Matrix3D его объекта Transform.

Например:

var leafMatrix:Matrix3D = this.transform.matrix3D;

 

С помощью методов объекта Matrix3D можно выполнять: перемещение, поворот, масштабирование и перспективную проекцию.

Три основных способа создания или извлечения объектов Matrix3D:

1) Использовать метод Matrix3D() - принимает объект Vector, содержащий 16 числовых значений, и помещает каждое из них в ячейку матрицы. Например:

var rotateMatrix:Matrix3D = new Matrix3D(1,0,0,1, 0,1,0,1, 0,0,1,1, 0,0,0,1);

2) Задать числовое значение для свойства z экранного объекта, а затем извлечь матрицу преобразования из свойства transform.matrix3D этого объекта.

3) Извлечь объект Matrix3D, управляющий отображением трехмерных объектов в рабочей области, получив значение свойства perspective Projection.matrix3D корневого экранного объекта.

 

Создание и примеры использования объектов Point, Rectangle, Matrix пакета flash.geom

flash.geom содержит классы, определяющие геометрические объекты, такие как точки, прямоугольники и матрицы преобразований. Эти классы используются для определения свойств объектов, которые применяются в других классах.

Все геометрические классы базируются на том, что положение объекта на экране представляется в двумерной плоскости. Каждый экранный объект, включая рабочую область, имеет свое собственное координатное пространство для размещения дочерних экранных объектов, рисунков и т. д

 

Для представления отдельных точек в координатном пространстве можно воспользоваться экземплярами класса Point.

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

Для применения комплексных преобразований к экранному объекту можно использовать экземпляр класса Matrix. Такие преобразования как поворот, изменения положения и масштаба, могут применяться к экранному объекту непосредственно с использованием свойств этого объекта.

В классе Point для нахождения расстояния между двумя точками в координатном пространстве используется метод distance().Например, следующий код позволяет найти расстояние между точками регистрации двух экранных объектов circle1 и circle2, расположенных в одном контейнере:

import flash.geom.*; var pt1:Point = new Point(circle1.x, circle1.y); var pt2:Point = new Point(circle2.x, circle2.y); var distance:Number = Point.distance(pt1, pt2);

 

Изменить положение объекта Rectangle, задав свойства x и y:

import flash.geom.Rectangle;

var x1:Number = 0;

var y1:Number = 0;

var width1:Number = 100;

var height1:Number = 50;

var rect1:Rectangle = new Rectangle(x1, y1, width1, height1);

Изменить свойства левой стороны left и верхнего края top:

rect1.right = 60;

rect1.bottom = 20;

Изменить положение с помощью метода offset():

rect1.offset(20, 30);

Изменить положение с помощью метода offset():

rect1.offset(20, 30);

Изменить положение с помощью метода inflate(), в котором используются два параметра, dx и dy - число пикселов, на которое отстоят соответствующие стороны прямоугольника от центра:

rect1.inflate(6,4);

Методы offsetPt() и inflatePt() работают аналогичным образом, за исключением того, что в нем в качестве параметра используется объект Point вместо значений смещения dx и dy.

Метод createBox() включает параметры, позволяющие задавать эффекты масштабирования, поворота и перемещения для матрицы. Например:

var matrix:Matrix = new Matrix();

var scaleX:Number = 2.0;

var scaleY:Number = 3.0;

var rotation:Number = 2 * Math.PI * (45 / 360);

var tx:Number = 10;

var ty:Number = 20;

matrix.createBox(scaleX, scaleY, rotation, tx, ty);

 

 



<== предыдущая лекция | следующая лекция ==>
Назначение основных методов класса Graphics API рисования | I will have some coffee and my friend will have some tea, please.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.17 сек.