LINUX.ORG.RU

История изменений

Исправление waker, (текущая версия) :

1. на входе координаты мыши (от левого верхнего угла, наращение «вниз»). нужно перевести их в правильную систему координат, в которой ты работаешь

x = x_mouse - x_scroll; // x_scroll -- это насколько у тебя viewport сдвинут от начала координат
y = -(y_mouse - y_scroll); // то же самое, но с переворотом

2. выравниваем по сетке той функцией что я выше написал

float snap_to_grid (float x, float grid_step) {
    return round(x / grid_step) * grid_step;
}
x = snap_to_grid (x, 10);
y = snap_to_grid (y, 10);

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

x += x_scroll;
y = -(y + y_scroll);

Исходная версия waker, :

1. на входе координаты мыши (от левого верхнего угла, наращение «вниз»). нужно перевести их в правильную систему координат, в которой ты работаешь

x = x_mouse - x_scroll; // x_scroll -- это насколько у тебя viewport сдвинут от начала координат
y = -(y_mouse - y_scroll); // то же самое, но с переворотом

2. выравниваем по сетке той функцией что я выше написал

float snap_to_grid (float x, float grid_step) {
    return round(x / grid_step) * grid_step;
}

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

x += x_scroll;
y = -(y + y_scroll);