Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Семестр2_lr.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.27 Mб
Скачать

Лабораторная работа 3 Изменение траектории движения

Цель работы:

1). Изучить: тригонометрические методы в компьютерной графике на примере создания параметрической траектории движения объекта; использование тригонометрических функций стандартного класса Math.

2). Создать приложение для управления бесконечным движением графического объекта по заданной нелинейной траектории.

Порядок выполнения работы:

1. Создайте новую папку, новый проект типа Flash Project и новый документ типа Flash Document с одинаковыми названиями "lab03".

2. В библиотеку документа "lab02.fla" перенесите два объекта "Background" и "Ball" типа MovieClip с параметрами из предыдущей работы.

3. На первом кадре создайте экземпляр класса Main.

4. Скопируйте в рабочую папку и присоедините к проекту классы Main и Motion из предыдущей лабораторной работы.

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

y = x sina .

6. Тригонометрические функции, работающие с радианами, описаны методами стандартного класса Math. Функция, задающая перемещение объекта по прямой линии будет выглядеть следующим образом:

private function stepMotion() {

this._x += this.object.vx;

this._y += Math.sin(Math.PI/180*this.object.vy)*this.object.vx;

}

7. В классе Main измените значения параметров обращения к классу Collision так, чтобы объект продолжал двигаться по прямой линии под углом 45° с постоянной скоростью 4 точки по оси X в каждом кадре:

var motion:Collision = new Collision(ball, 4, 45);

8. Внесите изменения в метод startMotion() класса Collision таким образом, чтобы объект отталкивался от стенок неподвижного объекта.

9. Для того, чтобы графический объект двигался вокруг определённой точки на плоскости (рис. 4), необходимо использовать вычисление косинуса угла поворота для нахождения координаты объекта на траектории в зависимости от угла поворота. В приведённом ниже примере точкой поворота будет являться координата (0,0). Скорость движения здесь будет определять изменение угла поворота. Также указан исходный угол начала вращения:

private function stepMotion() {

this._x = this.object.vx+Math.cos(Math.PI/180*this.object.vy)*

this.object.vx;

this._y = this.object.vx+Math.sin(Math.PI/180*this.object.vy)*

this.object.vx;

this.object.vy+= this.object.vx;

}

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

Рис. 4. Движение объекта по эллиптической траектории

11. Сохраните и закройте проект.

Контрольные вопросы:

1). Как описать движение объекта по прямой с помощью тангенса?

2). Каким образом можно изменить метод startMotion() класса Collision для

проверки столкновений при криволинейных траекториях движения?

3). Какую единицу измерения скорости можно здесь использовать?

4). Что означает исходный угол начала вращения объекта?

5). Для чего используется множитель Math.PI/180?