имеется изометрическая сетка:
строится она таким образом:
property int mapcols: 8 // ширина карты
property int maprows: mapcols * 4 // высота карты
property int cellsize: 96 // размер клетки, если бы она не была в изометрии :)
property int cellsizew: cellsize // ширина тайла
property int cellsizeh: cellsize / 2 // высота тайла
function createTextures() {
var cellcount = mapcols * maprows
for(var id = 0; id < cellcount; id++) {
// по индексу тайла (слева-направо, сверху-вниз) получаем
// номер колонки и номер строки
var col = id % mapcols
var row = Math.floor(id / mapcols)
// находим координаты
// левого верхнего угла описывающего тайл прямоугольника
var iseven = row / 2 == Math.floor(row / 2) // четная/нечетная строка
var cx = iseven ? col * cellsizew : col * cellsizew + cellsizew/2
var cy = iseven ? row * cellsizeh : row * cellsizeh - cellsizeh/2
cy -= Math.floor(row/2) * cellsizeh
var component = Qt.createComponent("Cell.qml")
var cell = component.createObject(map, { "x": cx, "y": cy });
}
}
как найти координаты белой точки на изометрической сетке (т.е. по сути надо найти числа 2х4), зная локальные координаты этой точки в окне?