Перемещение под любым углом
Как реализуется перемещение под любым углом?
Например как в арканоиде.
Перемещение вверх это понятно
вправо
по диагонали
А вот как реализовать перемещение под другими углами не могу понять...
Как-то вроде через синусы-косинусы?
Вообще то да.
Но если именно в градусах не надо, то можно приращивать dx и dy. И тогда движение возможно под любым углом.
Но если именно в градусах не надо, то можно приращивать dx и dy. И тогда движение возможно под любым углом.
А если не трудно можно примерный код и с косинусом и с dx-dy?
Кстати, а зачем вообще косинус там нужен?
Каким образом отношение катета к гипотенузе позволяет двигаться под разными углами?
Или рисовать косинусоиды...
y = y + cos(угол) * линейная_скорость
Вспоминай шестой седьмой класс.
Каким образом отношение катета к гипотенузе позволяет двигаться под разными углами?
Или рисовать косинусоиды...
y+=1
А еще лучше сделай их вещественными а не целыми.
y = y + cos(угол) * линейная_скорость
А не наоборот?
Если угол измеряется от оси абсцисс и ось ординат ориентирована вверх, то трансформация из полярных координат в декартовы (вектор) выглядит так:
x = r * cos(phi),
y = r * sin(phi)
}
В машинной графике ось ординат, как правило, инвертирована, так что правую часть второго уравнения необходимо домножить на -1.
Кстати правда правда наоборот. А я почему привык брать х по синусу, а у по минус косинусу, тогда, для системы координат gdi ноль градусов - строго вверх, а при увеличении угла идет поворот по часовой стрелке.
Если угол измеряется от оси абсцисс и ось ординат ориентирована вверх, то трансформация из полярных координат в декартовы (вектор) выглядит так:
x = r * cos(phi),
y = r * sin(phi)
}
В машинной графике ось ординат, как правило, инвертирована, так что правую часть второго уравнения необходимо домножить на -1.
Прошу прощения за мою серость, но что такое r и phi?
И линейная скорость это скорость движения шарика?
Вы,простите,в каком классе учитесь?Это же полярная СК
А здесь ещё о какой-то скорости идёт речь?
а пользоваться только целочисленкой.
Только нужно ввести нативную метрику. Тоесть, представить,
что полный оборот не 360 привычных градусов, а 65536 (например).
Тогда всё упрощается. Самые старшие 2 бита будут определять направление,
т.е. инкрементировать/декрементировать координату X либо Y.
Дальше уже всё зависит от конкретной задачи,
и не сложно будет придумать алгоритм вычисления.