2017-08-08 5 views
1

IIIFで利用可能な画像回転を使用して、歴史的航空写真を地図上に重ねたいと考えています。私が直面している問題は、http://jsfiddle.net/jamesinealing/tr7obasm/などのコードを使用すると、画像をマップに配置する前に、回転に基づいて変更するNWポイントとSEポイントを手動で計算する必要があることです。IIIF回転画像の高さと幅を計算する方法

私がやってみたいのは、新しい回転画像の画像の大きさを計算しておき、それを使って少なくとも緯度経度の近似値を得ることです。微調整。計算のための私のテストコードは、(https://stackoverflow.com/a/17453766に基づく)http://jsfiddle.net/jamesinealing/ehp65gy1/である

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; 

問題はIIIF回転が任意の値0から359までである一方、それは唯一、90度の角度まで動作することです。 180以上の値でも同じ結果が得られますので、何らかのモジュラスが必要ですが、なぜ90度を越えて動作していないのかを知ることはできません!

答えて

1

新しい箱の寸法は唯一楕円上すなわち300 * 224と* 300 224の間、angle % 90に応じて変化するので、あなたはそれの周りにどの方法を動作するように調整した角度といくつかのif文でMath.absを使用することができますすべきだ。

+0

大変ありがとうございました。私はそれを行うためのより滑らかな方法があると確信していますが、これは私の作業コードです - http://jsfiddle.net/jamesinealing/ehp65gy1/5/ – jamesinealing

+0

そして実際の地図オーバーレイでの動作 - http://jsfiddle.net/jamesinealing/p0qft0hs – jamesinealing

関連する問題