Иллюстрированный самоучитель по Flash-games


Преобразование координат - часть 2


angle += plane;

(9) // Вычисляем координаты для экрана,

screenx = realx;

screeny = radius*Math.sin(angle);

screenz = radius*Math.cos(angle);

(10) // Центрируем положение объекта. screenx += 27 5; screeny += 200; (11) // Возвращаем новые координаты. return({х:screenx,y:screeny,z:screenz});

Интересно, что Flash распознает понятие бесконечности. Так, выражение Math.atan(1/0) будет вычислено с результатом 1,5707963267949, то есть Pi/2!

Функция Math.atan() преобразует линию в угол в радианах. Необходимо указать значение разницы между начальной и конечной точками линии по вертикали, разделенное на значение этой же разницы по горизонтали. Например, если значения координат начальной и конечной точек линии соответственно равны (200, 200) и (275, 250), то, . чтобы получить угол, необходимо записать Math, atan (75/50). Результатом будет значение .9828 радиан, что составляет примерно 56 градусов. В действительности функция Math.atan () немного сложнее, однако данный пример позволит вам создать общее представление о ней.

Опишем каждый шаг вышеприведенного кода: (1) Задаются координаты х, у и z объекта.

(2) Вычисляется расстояние на плоскости ху от центра координат до проекции объекта на плоскость.

(3) Определяется угол на плоскости ху.

(4) Значение угла увеличивается на величину поворота объекта.

(5) Задаются новые координаты х, у и z с учетом изменения угла.

(6) Задается расстояние от центра координат до объекта на плоскости yz.

(7) Определяется угол на плоскости yz.

(8) Задается наклон плоскости.

(9) Задаются новые координаты х, у и z с учетом наклона.

(10) Центр новых координат имеет значение 0. Для корректировки к ним прибавляется действительное значение центра экрана (в данном случае (275, 200)).

(11)Теперь координаты х и у могут использоваться для отображает объекта на экране. С помощью координаты z можно также снизить яркость объектов, которые должны казаться расположеными дальше от пользователя.

Функция plotPoint преобразует точки с трехмерными координатами в точки с двумерными координатами при помощи ортогональной проекции. Это означает, что перспектива здесь не используется, и объекты находящиеся на дальнем плане, не уменьшаются. Это подходит для моделирования небольших объектов и специальных эффектов, но не годится для создания больших трехмерных сцен.




Начало  Назад  Вперед



Книжный магазин