алгоритм визуализации гравитационных искажений (2D) - PullRequest
2 голосов
/ 26 марта 2011

Я работаю над игрой для Android и хотел бы реализовать 2D-сетку для визуализации эффектов гравитации на игровом поле.Я хотел бы исказить сетку на основе различных объектов на моем игровом поле.Эффект, который я ищу, аналогичен следующему в библиотеке обработки:

gravity

За исключением того, что моя сетка будет проще - 2D, и ее нужно строго смотреть сверху, какесли смотреть вниз на игровое поле.

Может кто-нибудь указать мне алгоритм для построения такой сетки?

Одна идея, которую я придумал, состояла в том, чтобы нарисовать линии, как если бы они были «частицами» - начать с одного конца экрана и нарисовать линию в нескольких сегментах, рассматривая каждый сегмент как частицу, вычисляяэффект гравитации в местоположении каждого сегмента.

Приложение предназначено для запуска на Android.

Спасибо

1 Ответ

2 голосов
/ 10 мая 2011

Я бы нарисовал каждую линию как отдельный сегмент, как вы упомянули. Если сетка разреженная, она может быть самой быстрой.

Если вы просматриваете сетку сверху, вам необходимо рассчитать смещения координат x и y. Самый простой способ - сделать смещение вдоль оси z, а затем сфальсифицировать перспективу с x_result = x/z и y_result = y/z. Вы устанавливаете z=1 и убедитесь, что изменили его лишь относительно немного (например, + - 0,1).

Ваш z должен быть пропорционален сумме 1/(distance to the sphere)^2. Это имитирует, как работает гравитация - она ​​уменьшается с квадратом расстояния. Хорошие новости - квадрат расстояния означает для вычисления delta_x^2 + delta_y^2 - так что вы экономите себе этот квадратный корень == быстрее.

...