@AnderZero

Как сделать вычисление координаты точнее?

Здравствуйте, уважаемые!
У меня есть проблема:
canv.addEventListener('mousemove',function(e){
  			console.log(e);
  			ctx.fillRect(Math.floor(e.clientX/(16*zoom)) * (16*zoom)+(16*zoom)/2,Math.floor(e.clientY/(16*zoom)) * (16*zoom)+(16*zoom)/2,16*zoom,16*zoom);
  			if(mousedo){
  			var xt =e.clientX;
  			var yt =e.clientY;
  			var pxt = Math.round(xt/(16*zoom));
  			console.log(pxt);
  			var pyt = Math.round(yt/(16*zoom));
  			field[pyt * 32 + pxt] = color;
  		}});

Итак, у меня есть поле 32x32, которое хранится в массиве field, который я использую как матрицу, и храню значение цвета пикселя:пример ['white','gray','blue'] и т.д.
Для вычисления номера массива, я вычисляю номер пикселя по y(сверху вниз) и по x(слева направо), в конечном итоге, чтобы найти номер массива я умножаю 32(кол-во элементов в одной строке) на номер пикселя по y и прибавляю номер пикселя по x(что это такое расписал ранее). Но в результате пиксель появляется не там, где мне нужно, помогите исправить :)

Заранее спасибо, если есть вопросы - задавайте. :)
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
@Karpion
Я ничего не понял, но навскидку надо как-то так: field[Math.round(2*yt/zoom) + pxt] = color; Т.е. я сначала всё перемножил и разделил, и только в конце округлил. Попробуйте - отпишитесь о результате.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы