如何计算IIIF旋转图像的高度和宽度

时间:2017-08-08 17:08:20

标签: javascript geometry iiif

我想使用IIIF中提供的图像旋转将历史航拍照片叠加到地图上。我面临的问题是使用http://jsfiddle.net/jamesinealing/tr7obasm/中的代码我需要在将图像放在地图上之前手动计算NW和SE点,这些点根据旋转而改变。

我要做的是计算新旋转图像的像素尺寸(如果你愿意,可以使用边界框),然后使用它们至少得到一些近似于lat lng坐标的东西,然后我可以调整

我的计算测试代码位于http://jsfiddle.net/jamesinealing/ehp65gy1/(基于https://stackoverflow.com/a/17453766

var rotation=30;
var angle=rotation;
// var angle=((360-rotation) % 180);
var imgWidth=300;
var imgHeight=224;
w = Math.sin(angle * Math.PI/180) * imgHeight + Math.cos(angle * Math.PI/180) * imgWidth;
h = Math.sin(angle * Math.PI/180) * imgWidth + Math.cos(angle * Math.PI/180) * imgHeight;

问题是它只能达到90度角,而IIIF旋转任何值都是0-359。我明白任何180或以上的值都会产生相同的结果,所以无论如何都需要某种模数,但不能理解为什么它不能超过90度!

1 个答案:

答案 0 :(得分:1)

新框的尺寸仅根据angle % 90而有所不同,即椭圆上的尺寸在300 * 224和224 * 300之间,因此您只需使用调整后的角度Math.absif mat %>% replace(is.na(.), 0) 1}}语句可以解决它应该是哪种方式。