始点と終点 (デカルト x、y 座標の両方)、半径と方向 (時計回りまたは反時計回り) を持つ円弧の説明が与えられた場合、円弧を開始角度、終了角度を持つ円弧に変換する必要があります。 、中心、および半径。
これを可能にする既知のアルゴリズムまたは疑似コードはありますか? また、これらの種類の変換を説明する特定の用語はありますか?
始点と終点 (デカルト x、y 座標の両方)、半径と方向 (時計回りまたは反時計回り) を持つ円弧の説明が与えられた場合、円弧を開始角度、終了角度を持つ円弧に変換する必要があります。 、中心、および半径。
これを可能にする既知のアルゴリズムまたは疑似コードはありますか? また、これらの種類の変換を説明する特定の用語はありますか?
この方程式系を解く中心を見つけることができます。
(sx-cx)^2 + (sy-cy)^2=R^2
(ex-cx)^2 + (ey-cy)^2=R^2
ここで、(sx,sy) は始点の座標、(ex,ey) は終点の座標、未知数 cx、cy は中心です。このシステムには 2 つのソリューションがあります。次に、次のように角度を見つけることができます
StartAngle = ArcTan2(sy-cy, sx-cx)
EndAngle = ArcTan2(ey-cy, ex-cx)
既知の方向では、追加の制限なしに 2 つの可能なソリューションから 1 つを選択することはできないことに注意してください。たとえば、start=(0,1)、end=(1,0)、R=1、Dir = 時計回りの場合、中心が (0,0) の Pi/2 円弧と中心が 3*Pi/2 の円弧 ( 1,1)
指定された半径を持ち、始点と終点の両方を通過する 2 つの円の中心を取得するために、MBo とは異なるアプローチを提案します。
P と Q が円弧の始点と終点である場合、2 つの円のそれぞれの中心は、PQ に直交する P から Q への直線であり、PQ を二等分する直線 L 上にあります。中心から L までの距離 d は、ピタゴラスの定理によって簡単に得られます。e が PQ の長さである場合、d^2 + (e/2)^2 = r^2 です。このようにして、MBo のアプローチから得られる連立方程式を解くことを回避できます。
半円がある場合、任意のアプローチは数値的に不安定になることに注意してください。これは、P と Q を持つ指定された半径の円が 1 つしかないためです。(その場合、正しい用語は「問題が不適切に設定されている」であると思います。これは、P と Q が正確に 2r 離れている場合に発生します。これが実際に正しいかどうかを判断するには、2 つの double が等しいかどうかを確認する必要があります。は常に少し問題があります. 何らかの理由で、半円があることがわかっている場合は、PQ の中心を計算する方がよいでしょう)。