Как реализовать оптические элементы в Java - PullRequest
0 голосов
/ 03 апреля 2012

Я разрабатываю игру, которая основана на оптических элементах, таких как зеркала и линзы.У меня есть луч.Если луч попадает в оптический предмет, он должен отражаться в зависимости от правил физики.Я знаю направления луча.Поэтому мне нужно обнаружить столкновение с оптическими предметами, чтобы я не мог рассчитать отражение.Что было бы лучшим способом реализовать оптические элементы в Java для обнаружения столкновения с лучом и оптическим элементом.Граница коробочной модели не подойдет для моей ситуации.Я думаю использовать полигоны.Точку столкновения (x, y) будет легко обнаружить, но оптические элементы можно вращать, поэтому вычисление углов и отражения будет затруднено.

Что вы рекомендуете?

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Рассчитайте угол между двумя линиями зеркала и луча.Тогда вам просто нужно нарисовать отраженный луч под тем же углом на другой половине зеркала.

0 голосов
/ 03 апреля 2012

Обычно при разработке пользовательского интерфейса у вас есть модель данных и представление, которое отображает модель данных.

Ваша проблема немного другая. У вас будет класс, представляющий зеркало, и другой класс, представляющий линзу. Экземпляры классов будут содержать информацию о состоянии, такую ​​как положение объекта и направление, в котором находится объект. Методы класса будут отвечать за реализацию правил физики зеркал и линз.

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

Хотя источник луча, линзы и зеркала являются объектами в вашей модели данных, сам луч должен вычисляться каждый раз, когда вы хотите нарисовать луч на виде.

...