我正在用JavaScript构建一个计时器,并希望实现光标缩放。我有一个平移值和缩放系数。我编写了下面的代码,在给定当前平移、要缩放的点以及新旧缩放值的情况下,生成新的缩放值。
const panFromZoom = (pan, point, oldZoom, newZoom) => {
return pan + point / newZoom - point / oldZoom;
};
对于point
固定在某一值的情况,该函数是完美的。当移动点同时主动放大或缩小时,会导致意想不到的行为。我能对这个公式做些什么改变才能使它起作用?
明白了。计时器以秒为单位查看时间,因此我的推理方法是,我希望相同的像素(枢轴点)对应于相同的秒值。
const panFromZoom = (pan, point, oldZoom, newZoom) => {
const fac = newZoom / oldZoom;
return point / fac + pan / fac - point;
}
这个公式所做的是用归一化的点变换归一化的平移,然后用非归一化的点把它移回来。