Javascript 如何在缩放和/或平移后在以像素表示的时间线上获得新的开始和结束

Javascript 如何在缩放和/或平移后在以像素表示的时间线上获得新的开始和结束,javascript,math,zooming,Javascript,Math,Zooming,我使用的是highcharts,但无法使用其内置的收缩缩放功能,因为它没有显示我需要的正确操作,所以我依靠调查series元素和transform属性来完成触摸缩放/平移事件。我对信息的理解是正确的,但我的数学技能显然不能正确地解释它 因此,给定一个已知的时间段startMs1和endMs,一个应用于width的宽度,一个已知的起始偏移量startoffset,我试图计算给定一个结束偏移量endoffset和缩放量scale,其中缩放量>1的结束起始时间和结束时间,而小于1的比例正在缩小 我希望

我使用的是highcharts,但无法使用其内置的收缩缩放功能,因为它没有显示我需要的正确操作,所以我依靠调查series元素和transform属性来完成触摸缩放/平移事件。我对信息的理解是正确的,但我的数学技能显然不能正确地解释它

因此,给定一个已知的时间段
startMs1
endMs
,一个应用于
width
的宽度,一个已知的起始偏移量
startoffset
,我试图计算给定一个结束偏移量
endoffset
和缩放量
scale
,其中缩放量>1的结束起始时间和结束时间,而小于1的比例正在缩小

我希望这个gif能帮助你理解这个问题


我看不出你为什么想要这个?也许我不明白你的问题。但是zoom只是将所有值乘以
zoom
,得到实际值,我们可以除以
zoom

您也可以使用比率

var〱 = document.querySelector.bind(文档);
变量卐 = window.getComputedStyle;
变量ლ = 帕森特;
var zoom=1.3;
变量时间线宽度=ლ(卐(〱"时间轴",宽度10 ;;
变量widthOfTimelineZoomed=ლ(卐(〱(“#时间线缩放”)。宽度,10)*缩放;
//wZoomed/woriginal=woriginal/x
//x=wOriginal*wOriginal/W缩放
console.log(时间线宽度*时间线宽度/时间线宽度缩放);
//僵尸时间线的200个单位=200个单位/放大真实时间线
console.log(时间线/缩放的宽度)
#时间线,#时间线缩放{
宽度:200px;
高度:5px;
背景色:黑色;
利润率:20px 5px;
}
#时间线放大{
缩放:1.6;
}