これを計算するスプレッドシートを書きました。必要に応じて、 https://skydrive.live.com/redir?resid=23B7BEDE6527529E !529&authkey=!AGboDW72AySsnK8で見ることができます。(これにより、オンラインで動作するバージョンが生成されるはずですが、ダウンロードすることもできるはずです。)
基本的なテクニックは次のように機能します。
- スクランチされていないエンドポイントの X 座標と Y 座標を計算します
- 単純なスケーリングを使用してそれらをスクランチし、目的のエンドポイントの X 座標と Y 座標を取得します
- それらから角度に戻る
これにはかなりの計算が含まれます。そのスプレッドシートでそれをたどることができますが、すべての手順は次のとおりです。
まず、角度を変換して座標ジオメトリの規則を使用します。私が知る限り、3 時から時計回りに測定していますが、座標ジオメトリでは、正の角度が反時計回りであることがより一般的です。したがって、開始角度と終了角度はそれぞれ 191 度と 67 度になります。(私がこれを行ったのは、この方が数学の混乱が少ないことがわかったからです。))
次に、スプレッドシートは始点と終点の半径を計算します。開始点と終了点に使用している式は次のとおりです。
=D2*D3/SQRT(POWER(D3*COS(RADIANS(D4)),2) + POWER(D2*SIN(RADIANS(D4)),2))
=D2*D3/SQRT(POWER(D3*COS(RADIANS(D5)),2) + POWER(D2*SIN(RADIANS(D5)),2))
D2 と D3 は、X と Y の半径です。D4 は開始角度で、D5 は終了角度です (「従来の」角度になるように調整されています)。この式は、Wikipedia のEllipsesの「中心に対する極形式」というセクションの項目から取得しました。その方程式は角度を取り、楕円の半径がその角度でどうなるかを教えてくれます。
次に、これを使用して、始点と終点の X 座標と Y 座標を計算します。開始 X および Y の式は次のとおりです。
=$B$8*COS(RADIANS(D4)) + D2
=D3-$B8*SIN(RADIANS(D4))
前述のように、D2 と D3 は X と Y の半径で、D4 は開始角度です。(端の X と Y の式は、D5 の場合のみ同じように見えます。X 半径を追加する理由は、この数値がないと、-Xradius から +Xradius までの範囲になるためです。これを追加すると、0 から幅の範囲になることを意味します。Y 軸は似たようなものですが、コンピューター グラフィックス システムではこれが上下逆になる傾向があるため (Y を大きくするとページが下に行く傾向があるため)、画面座標を取得するために反転させました。 。ごめん!
次に、縮んだ X と Y を計算します。開始点の式は次のとおりです。
=B9/B2*B13
=B10/B3*B14
B9 と B10 は、前の手順で計算されたストレッチ前の X と Y です。B2 と B3 は元の幅と高さで、B13 と B14 は縮んだ幅と高さです。(もちろん、最後の数式はかなり似ています。) したがって、これは単純なスケーリング操作です。
最後に、これらから角度を計算します。開始角度の式は次のとおりです (終了角度はほぼ同じです)。
=MOD(DEGREES(ATAN2(B16 - $D$13, $D$14-B17)), 360)
ATAN2 関数は、X 座標と Y 座標を取り、原点からその X、Y ポイントまでの線の角度を示します。Excel はラジアンで動作するため、これを度に戻す必要があります (以前の数式で度からラジアンに変換していたように)。そして、負の角度を避けるために MOD 360 を使用しています。ATAN2 は PI (つまり 180 度) より大きい値を生成することはなく、それを超える角度に対して負の値を生成します。そのモジュロ 360 を取ると、正の数に戻ります。
そして最後のステップは、これを時計回りの角度システムに戻すことです:
= 360 - B19
引き伸ばされた 1.88/3.4 次元を入力すると、165.51 度と 287.70 度が得られます。それはあなたの数字と完全には一致しませんが、私はあなたがそれらをどこから得たのかを突き止めようとしています. それらは目で行われますか?2.5/2.55 を入力すると、171.71 と 299.51 になります。繰り返しますが、あなたのものとはわずかに異なりますが、それほど違いはありません。