关于图片的两次缩放计算
孙泽辉 Lv5

krpano里面的雷达图可以有宽有窄,而不单单是正方形的,这就需要其坐标点对应宽高进行缩放,如何计算缩放后的坐标点呢?

什么图形学原理我就不扯了,就是等比缩放的问题,平面向量乘以一个标量。

坐标点(3,3)缩放两倍后就是(3*2,3*2) = (9,9)

其中雷达图分为过高的图片和过宽的图片,这两种都是需要单独处理的。
例如过高的图片,我们希望高度最高不能超过外层的560高度,所以该粉色框最高560,宽度根据原图片缩放至560的比例来等比缩放。
另外过宽的图片,我们希望宽度最宽不能超过外层的560宽度,所以粉色框最宽560,高度根据原图片缩放至560的比例来等比缩放。
对于过高的图片高度的算法:

1
2
3
设原图片宽度ORW = 400, 高度ORH = 862 
粉色框宽度OLW = ?, 高度OLH = 560
则:OLW = (OLH / ORH) * ORW = 0.649 * 400 = 259 = 260

现需要将整个图片等比缩放至宽度固定200,高度自适应。
所以图片高度计算方法:

1
2
3
设粉色框宽度OLW = 260, 高度OLH = 560 
新粉色框宽度NW = 200, 高度NH = ?
则:NH = (NW / OLW) * OLH = 430

对于下面过宽的图片计算方法同上

图上的坐标点计算方法:

例如原始宽高是 260 * 560,缩放至 200 * 430,则原始点(30,90)缩放后为点(23.08,69.11)

缩放后(x,y) = (200 / 260 * x,430 / 560 * y)

因为等比缩放,这个共用的比例可以提出来。

后面这个缩放雷达图还要放大显示,所以直接将图片乘以放大比例,坐标点也乘缩放比例就可以了。

但缩放比例从哪来呢?当然不是写死,那样小屏幕就吃不消了。而是让高度等于80%,宽度自适应。

此时算出新图和旧图的缩放比例即可。

 Comments
Comment plugin failed to load
Loading comment plugin
Powered by Hexo & Theme Keep
Total words 85.5k