2

これはすべて数学に関するものです。学校で習ったことを忘れてしまったのは残念です。

OK、Javascriptで特定の角度で(キャンバスを使用して)回転した後の画像の寸法を取得しようとしています。

ここに画像の説明を入力

4

2 に答える 2

11

ここには MSPaint 以外のツールがないため、画像を再利用します。

ここに画像の説明を入力

元の長方形のサイズが R(ectangle)W(idth) * RH(eight) だとします。

この場合RW=200RH=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)

と の定義によるsincos:

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、すべてを計算できるようになりました。

于 2012-11-30T07:48:07.867 に答える