Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перемещение под любым углом

1.8K
07 сентября 2010 года
trivium
128 / / 31.01.2010
Всем привет!
Как реализуется перемещение под любым углом?
Например как в арканоиде.
Перемещение вверх это понятно
 
Код:
y--

вправо
 
Код:
x++

по диагонали
 
Код:
x++; y++

А вот как реализовать перемещение под другими углами не могу понять...
Как-то вроде через синусы-косинусы?
399
07 сентября 2010 года
KIV
432 / / 20.01.2009
Цитата:
Как-то вроде через синусы-косинусы?


Вообще то да.
Но если именно в градусах не надо, то можно приращивать dx и dy. И тогда движение возможно под любым углом.

1.8K
07 сентября 2010 года
trivium
128 / / 31.01.2010
Цитата: KIV
Вообще то да.
Но если именно в градусах не надо, то можно приращивать dx и dy. И тогда движение возможно под любым углом.



А если не трудно можно примерный код и с косинусом и с dx-dy?
Кстати, а зачем вообще косинус там нужен?
Каким образом отношение катета к гипотенузе позволяет двигаться под разными углами?
Или рисовать косинусоиды...

3.7K
07 сентября 2010 года
0nni
326 / / 24.06.2008
 
Код:
x = x + sin(угол) * линейная_скорость
y = y + cos(угол) * линейная_скорость

Вспоминай шестой седьмой класс.
Цитата:
Кстати, а зачем вообще косинус там нужен?
Каким образом отношение катета к гипотенузе позволяет двигаться под разными углами?
Или рисовать косинусоиды...


 
Код:
x+=3
y+=1

А еще лучше сделай их вещественными а не целыми.
341
08 сентября 2010 года
Der Meister
874 / / 21.12.2007
Цитата: 0nni
 
Код:
x = x + sin(угол) * линейная_скорость
y = y + cos(угол) * линейная_скорость

А не наоборот?
Если угол измеряется от оси абсцисс и ось ординат ориентирована вверх, то трансформация из полярных координат в декартовы (вектор) выглядит так:

 
Код:
{
    x = r * cos(phi),
    y = r * sin(phi)
}
Здесь длиной вектора (r) будет являться скорость.
В машинной графике ось ординат, как правило, инвертирована, так что правую часть второго уравнения необходимо домножить на -1.
3.7K
08 сентября 2010 года
0nni
326 / / 24.06.2008
Цитата: Der Meister
А не наоборот?



Кстати правда правда наоборот. А я почему привык брать х по синусу, а у по минус косинусу, тогда, для системы координат gdi ноль градусов - строго вверх, а при увеличении угла идет поворот по часовой стрелке.

1.8K
09 сентября 2010 года
trivium
128 / / 31.01.2010
Цитата: Der Meister
А не наоборот?
Если угол измеряется от оси абсцисс и ось ординат ориентирована вверх, то трансформация из полярных координат в декартовы (вектор) выглядит так:
 
Код:
{
    x = r * cos(phi),
    y = r * sin(phi)
}
Здесь длиной вектора (r) будет являться скорость.
В машинной графике ось ординат, как правило, инвертирована, так что правую часть второго уравнения необходимо домножить на -1.



Прошу прощения за мою серость, но что такое r и phi?
И линейная скорость это скорость движения шарика?

7
09 сентября 2010 года
@pixo $oft
3.4K / / 20.09.2006
Цитата: trivium
Прошу прощения за мою серость, но что такое r и phi?

Вы,простите,в каком классе учитесь?Это же полярная СК

Цитата: trivium
И линейная скорость это скорость движения шарика?

А здесь ещё о какой-то скорости идёт речь?

41K
28 октября 2010 года
kisssko
108 / / 28.10.2010
Вообще, совсем необязательно прибегать к тригонометрии (синусы, косинусы, и т.п.),
а пользоваться только целочисленкой.
Только нужно ввести нативную метрику. Тоесть, представить,
что полный оборот не 360 привычных градусов, а 65536 (например).
Тогда всё упрощается. Самые старшие 2 бита будут определять направление,
т.е. инкрементировать/декрементировать координату X либо Y.
Дальше уже всё зависит от конкретной задачи,
и не сложно будет придумать алгоритм вычисления.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог