2017-08-08 126 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