У меня есть изометрическая сетчатая система, которая координирует начало с [0,0] в левом углу сетки (угол, показанный на приведенном выше изображении), где x увеличивается в сторону нижней части изображения, а y увеличивается в направлении вверх (поэтому [0, высота] будет верхним углом, а [ширина, 0] будет нижним углом в форме бриллианта с шириной и высотой, являющейся размером сетки, то есть 200 х 200 квадратов).
В любом случае мне нужна помощь в получении массива изометрических позиций сетки, которые содержатся в синем поле, показанном на изображении. За исключением повторения каждого x, y экрана pos и получения соответствующей позиции сетки (см. Этот вопрос, который я поставил ранее о том, как преобразовать из положения экрана в сетку positon Получить строку/столбец на изометрическая сетка.) Я не уверен, как добиться этого эффективно.
Возник вопрос, который я нашел ранее, это почти то же самое Ссылка здесь. Ответ состоял в том, чтобы сделать сетку изображением с разными цветами для каждого квадрата сетки а затем определить, какие цвета присутствовали под квадратом, я реализовал это решение, но он довольно медленный! Я почти думаю, что проверка положения сетки для каждого пикселя в окне выбора будет быстрее. Почему, почему javascript настолько медленен при циклировании!
Мне действительно нужно математическое решение этой проблемы, основанная на моей системе координат, но я не могу придумать что-то, что работает (и обрабатывает окно выбора, также выходящее из сетки)
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Изменить: К сожалению, предоставленные ответы не работали до сих пор, так как выбор похож на наличие выделенной области с бриллиантами на квадратной сетке, на самом деле нет верхнего левого, нижнего правого угла для повторения, если я не пропустил точку ответы? Я оптимизировал подход рендеринга, но при большом выборе, он по-прежнему добавляет заметное падение кадров, поскольку он проходит через весь цвет проверки пикселей и получает соответствующий квадрат