У меня проблема при масштабировании фрактала (webgl)

Когда я увеличиваю масштаб слишком много, и я перетаскиваю изображение с помощью мыши, он просто перемещается слишком быстро. Точно так же, если я слишком сильно уменьшаю изображение, изображение сильно затягивается.

Вот как это масштабируется (масштаб) и как он перемещает изображение вокруг (xPos, yPos)

fPosition.x = fPosition.x * scale + xPos;
fPosition.y = fPosition.y * scale + yPos;

Что мне делать, чтобы это исправить?

javascript,html,canvas,webgl,fragment-shader,

1

Ответов: 1


0

Вам нужно настроить движение по обратной шкале. Когда в 1 к 1 нет масштабирования, вы перемещаете изображение 1 пиксель на каждый один пиксель, который вы перетаскиваете.

Когда вы увеличены с 2 на 1. Один пиксель теперь имеет ширину в 2 пикселя (у вас есть шкала из 2), вы все равно хотите перетащить изображение с той же скоростью экрана, чтобы вы перемещали 1/scaleпиксели для каждого пикселя, который вы перетаскиваете. 1/2 = 0.5для каждого пикселя вы перемещаете мышь / указатель / касание.

При масштабировании от 0,5 до 1 шкала теперь равна 0,5, а изображения - вдвое меньше, чем вам нужно, чтобы переместить 1/scaleпиксели для каждого пикселя, который вы перетаскиваете.1/0.5 = 2

Таким образом, масштаб - это то, насколько большой пиксель, и движение является инверсией этого масштаба. 1 разделить масштаб

JavaScript, HTML, холст, WebGL, фрагмент-шейдер,
Похожие вопросы