Нахождение точки, нажатой в сетке - PullRequest
1 голос
/ 18 сентября 2011

Учитывая, что эта сетка (http://i.stack.imgur.com/Nz39I.jpg - это трапеция / трапеция, а не квадрат), как вы находите точку, по которой щелкнул пользователь? То есть Когда пользователь щелкает точку в сетке, он должен возвращать координаты, такие как A1 или D5.

Я пытаюсь написать для этого псевдокод, и я застрял. Может кто-нибудь мне помочь? Спасибо!

РЕДАКТИРОВАТЬ: Я все еще застрял ... Кто-нибудь знает какой-либо способ найти высоту сетки?

Ответы [ 3 ]

0 голосов
/ 18 сентября 2011

Если у вас есть координаты конечных точек линий сетки, то

Попробуйте использовать внутреннюю-внешнюю проверку для каждой линии сетки и найдите положение

0 голосов
/ 18 сентября 2011

Поскольку эта сетка является просто трехмерным видом плоскости 2D-сетки, существует проективное преобразование, которое преобразует координаты сетки в координаты на 2D-плоскости.Чтобы найти это преобразование, достаточно отметить 4 разные точки на плоскости (скажем, ребра), назначить им координаты на 2D плоскости и решить полученную систему линейных уравнений.

0 голосов
/ 18 сентября 2011

Если это истинная перспективная проекция, вы можете провести точку щелчка через обратную проекцию, чтобы найти ее координаты X, Z в трехмерном мире. Эта сетка имеет регулярный интервал, и вы можете использовать простую математику, чтобы получить A1, D5 и т. Д.

Если вы просто что-то нарисовали, то вам придется сравнить координаты Y с позициями горизонтальных линий, чтобы выяснить, какую строку. Затем вам нужно проверить его положение (влево / вправо) относительно угловых линий, чтобы получить столбец - для этого вам понадобятся либо координаты конечных точек, либо уравнения для линий.

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

...