Форум программистов, компьютерный форум, киберфорум
Наши страницы
ActionScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Taras_Z
100 / 84 / 5
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
#1

Движение самолета по заданным точкам

12.07.2013, 15:58. Просмотров 676. Ответов 8
Метки нет (Все метки)

Здравствуйте!
Нужна помощь в создании игры.
Есть самолет, который должен двигаться по заданным точкам.
Я пытаюсь писать вот такую ​​функцию, но движение не является совсем точным и когда самолет достается заданной точки, то он должен ходить вокруг нее.
Вот код функции которую необходимо исправить:

ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public function gotoPoint(xPoint:int, yPoint:int):void
        {
// delta - угол, на который повернут самолет и под которым он движется
                 //phi - угол, на который должен вернуться самолет
            phi = MyMath.GetAngle(super.body.position.x, super.body.position.y, xPoint, yPoint);
            if (MyMath.RadToDeg(phi) > 180)
                phi = MyMath.DegToRad(-(360 - MyMath.RadToDeg(phi)));           
            if (delta!=phi)
                if (delta - phi > 0)
                    delta -= AngleStep;
                else
                    delta += AngleStep;
 
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2013, 15:58
Ответы с готовыми решениями:

Движение самолета
Подскажите пожалуйста, как сделать следующее задание: Движение самолета по...

Уравнение движение самолета
Друзья, как вычислить скорость самолета. Самолет летит над нами прямолинейно....

Движение сверхзвукового самолета
Здравствуйте! Мне нужно смоделировать движение сверхзвукового самолета....

Смоделировать движение сверхзвукового самолета
дана блок-схема в фортране, необходимо смоделировать движение сверзвукового...

Движение самолета, управляемое клавиатурой
Всем здравствуйте! Помогите пожалуйста решить вот эту задачу - Вверху справа...

8
WebWinner
19 / 19 / 1
Регистрация: 05.04.2013
Сообщений: 87
12.07.2013, 17:31 #2
Цитата Сообщение от Taras_Z Посмотреть сообщение
Каждый настоящий программист подтвердит, что при помощи десяти пальцев на руках можно сосчитать не только до 10, но и до 1024!
до 65536

...по этой функции:
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public function gotoPoint(xPoint:int, yPoint:int):void {
    // delta - угол, на который повернут самолет и под которым он движется
    //phi - угол, на который должен вернуться самолет
    
    phi = MyMath.GetAngle(super.body.position.x, super.body.position.y, xPoint, yPoint);
    phi_deg=MyMath.RadToDeg(phi);
    delta_deg=MyMath.RadToDeg(deg);
    while(phi>180) {phi-=360}
    
    if (delta_deg!=phi_deg) {
        if (delta_deg>phi_deg) {
          delta_deg-=AngleStep;
        } else {
          delta_deg+=AngleStep;
        }
    delta=MyMath.DegToRad(delta_deg);
    }
}
Наверное у вас ошибка из за типов измерения (радианы и градусы).
0
Taras_Z
100 / 84 / 5
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
12.07.2013, 18:36  [ТС] #3
WebWinner, Всё проверил - ошибки нету
AngleStep в радианах
0
WebWinner
19 / 19 / 1
Регистрация: 05.04.2013
Сообщений: 87
12.07.2013, 18:41 #4
....а delta?

+эта функция должна выполняться пока phi не будет равен delta, т.е. должен быть таймер... Это предусмотрено?
0
Taras_Z
100 / 84 / 5
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
12.07.2013, 18:59  [ТС] #5
delta и phi тоже в радианах
по таймеру выполняется такая функция:
ActionScript 3
1
2
3
4
5
6
7
public function update(ev:Event):void
        {
            body.rotation = delta - MyMath.DegToRad(90);
            body.position.x += speed * Math.sin(delta);
            body.position.y -= speed * Math.cos(delta);
            updateSprite();
        }
0
WebWinner
19 / 19 / 1
Регистрация: 05.04.2013
Сообщений: 87
12.07.2013, 19:13 #6
а можно весь скрипт посмотреть?

...и всё таки я думаю ошибка в том, что все арифметические преобразования в радианах:
1) Переведи угол в градусы
2) Добавь AngleStep
3) Переведи угол в радианы
0
Taras_Z
100 / 84 / 5
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
13.07.2013, 08:39  [ТС] #7
Нет не дам)
Проблема в том, что самолет достигает заданой точки, но потом начинает двигатся в виде знака бесконечности, но с сдвигом вверх, а должен ходить вокруг точки.

Добавлено через 13 часов 15 минут
Немного поправил, но все равно проблема осталась...
0
Vovan-VE
13.07.2013, 15:38
  #8

Не по теме:

Цитата Сообщение от WebWinner Посмотреть сообщение
до 65536
У Вас по 8 пальцев? :swoon:

0
Taras_Z
100 / 84 / 5
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
13.07.2013, 23:40  [ТС] #9
Спасибо всем кто откликнулся!
Иногда Всегда помагает просто сесть за стол и расписать все случаи)
Я просто забыл добавить одну проверку)
Тема закрыта!
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        public function gotoPoint(xPoint:int, yPoint:int):void
        {
            phi = MyMath.getAngle(super.body.position.x, super.body.position.y, xPoint, yPoint) + MyMath.DegToRad(90);
            var delta_deg:Number = MyMath.RadToDeg(delta);
            var phi_deg:Number = MyMath.RadToDeg(phi);
            while (delta_deg > 360) delta_deg -=360;
            if (phi_deg> 180)
                phi_deg = -(360 - phi_deg);
            trace("\n\nCurrent: " + delta_deg);
            trace("Must: " + phi_deg);
            trace(body.position);
                        
            if (!(MyMath.equal(delta_deg,phi_deg, AngleStep/2)))
                if (delta_deg-phi_deg>0 && delta_deg-phi_deg<180)
                    delta_deg -= AngleStep;
                else
                    delta_deg += AngleStep;
            delta = MyMath.DegToRad(delta_deg);
        
        }
Добавлено через 7 минут
WebWinner, Vovan-VE,
У меня вообще то тоже ошибочка)
У человека 10 пальцев.
2^10-1 = 1023, но если считать ноль, то тогда 1024.
0
13.07.2013, 23:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2013, 23:40

Движение самолета на фоне неба
Движение самолета на фоне неба. А то курсовой нужно писать. Времени совсем нет....

Движение автомобиля и самолета в противоположных направлениях
Люди, сделайте плиз анимацию чтоб, например, сверху самолет летит в одну...

Построение графика по заданным точкам
Доброго времени суток! Очень нужна помощь: вывести на экран график по заданным...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru