Если для удобства предположить, что x2 и y2 больше, чем x1 и y1 соответственно, нам нужно только выполнить итерацию по изо-сетке для значений от x1 до x2 и от y1 до y2, принимая только изо-квадраты, у-координаты которых меньше обе из «больших» линий, и меньше, чем две «меньшие» линии.

я есть система изометрической сетки, координаты которой начинаются с [0,0] в левом углу сетки (угол, показанный на изображении выше) с увеличением x в направлении нижней части изображения и увеличением y в направлении верхней части (так [ 0, высота] будет верхним углом, а [ширина, 0] будет нижним углом в форме ромба, а ширина и высота будут размером сетки, т.е. 200 x 200 квадратов)

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

Был вопрос, который я нашел ранее, который почти точно такой жеСсылка здесь. Ответ состоял в том, чтобы визуализировать сетку в изображение с разными цветами для каждого квадрата сетки, а затем определить, какие цвета присутствовали под квадратом. Я реализовал это решение, но оно довольно медленное! Я почти думаю, что проверка положения сетки для каждого пикселя в поле выбора будет быстрее. Почему javascript так медленно работает с циклами!

Мне действительно нужно математическое решение этой проблемы, основанное на моей системе координат, но я не могу придумать что-то, что работает (и обрабатывает поле выбора, также выходя за пределы сетки)

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Редактировать: К сожалению, предоставленные ответы до сих пор не сработали, так как выделение похоже на выделение области, выделенной ромбом, на квадратной сетке, в действительности нет верхнего левого и нижнего правого угла для перебора, если я не пропустил точку ответов? Я оптимизировал метод рендеринга, но при большом выделении он по-прежнему добавляет заметное падение кадров, поскольку проходит через все пиксели, проверяя цвет и получая соответствующий квадрат

Ответы на вопрос(6)

Ваш ответ на вопрос