これはすべて数学に関するものです。学校で習ったことを忘れてしまったのは残念です。
OK、Javascriptで特定の角度で(キャンバスを使用して)回転した後の画像の寸法を取得しようとしています。
これはすべて数学に関するものです。学校で習ったことを忘れてしまったのは残念です。
OK、Javascriptで特定の角度で(キャンバスを使用して)回転した後の画像の寸法を取得しようとしています。
ここには MSPaint 以外のツールがないため、画像を再利用します。
元の長方形のサイズが R(ectangle)W(idth) * RH(eight) だとします。
この場合RW=200
、RH=80
;
ある角度 A だけ反時計回りに回転させた後、
0deg <= A <= 90deg
度(または0 <= A <= Math.PI/2
ラジアン)で、
この場合A=30deg
またはA=Math.PI/6
、
新しい「外側」の長方形では、各辺が 2 つの部分に分割されています (説明の便宜上、画像に対応しています)。
左側で、上部 (紫色) の部分を N(ew)H(eight)U(p) と呼び、下部 (赤色) の部分を NHL(ow) と呼びます。
下側にも同じルールがあり、NW(idth)L(eft) (青) と NWR(ight) (オレンジ) があります。
したがって、新しい長方形のサイズ (面積) は次のようになります。(NHU + NHL) * (NWL + NWR)
と の定義によるsin
とcos
:
NWL = RW * Math.cos(A); //where A is in radians
NHL = RW * Math.sin(A);
NHU = RH * Math.cos(A);
NWR = RH * Math.sin(A);
(度で使用している場合はA
、に置き換えA
ますMath.PI*A/180
)。
したがって、新しい「外側」の幅は になりNWL + NWR
、新しい「外側」の高さは になりNHU + NHL
、すべてを計算できるようになりました。