2017-08-08 89 views
1

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

我正在做的是计算新的旋转图像(边界框,如果你喜欢)的像素尺寸,然后使用它们至少得到一些近似的纬度坐标,然后我可以调整。该计算

我的测试代码为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

新箱的尺寸仅根据angle % 90变化之间,即300 * 224和224 * 300上的椭圆形,所以你可以只使用Math.abs与调整的角度和一些if语句去寻找哪些捷径可走应该。

+0

太好了,谢谢你的明确解释。我敢肯定,有这样做的闪光方式,但这是我的工作代码 - http://jsfiddle.net/jamesinealing/ehp65gy1/5/ – jamesinealing

+0

并在实时地图覆盖行动 - http://jsfiddle.net/jamesinealing/p0qft0hs – jamesinealing