ポイント P で何が起こっているかに注目するのがポイントです。ポイント P では、線 AP が円に接しているため、角度 APO は 90 度です。同様にAQOは90度です。
これで、三角形があることがわかり、2 つの長さと 1 つの角度がわかりました (AO、OP / OQ (同じもの)、および APO / AQO がわかります)。
ここで、サインの法則を使用します。
AO/sin(APO) = OP/sin(PAO)
PAO = asin(OP*(sin(APO)/AO))
単位を意識することを忘れないでください (つまり、入力値として 90 度を使用し、sin のライブラリ関数が度ではなくラジアンで返される可能性があることを忘れてください)。
ここから、三角形のすべての角度の合計が 180 度であることを知ることで、すべての角度を見つけることができます。これで、3 つの角度すべてが得られました。
上記の計算から角度 AOP が得られたら、再びサインの法則を使用して AP の長さを計算できます。
AP = sin(AOP) * AO / sin(APO).
sin(90 度) == 1 であることに注意してください (また、APO と AQO は 90 度 | pi/2 ラジアンであることを思い出してください)。
これで AP の長さがわかりました。A が (0, 0) にあると仮定すると、P の座標 (x, y) を見つけることができます。A が原点でない場合は、A の座標をオフセットとして追加します。
P の座標を求めるには:
PxCoord = AxCoord + AP * cos(PAO)
PyCoord = AyCoord + AP * sin(PAO)
注意: 三角関数 (sin / asin) が度またはラジアンを使用するかどうかを確認し、関数がラジアンを使用する場合は、90 度をラジアン (pi/2 ラジアン) に変換してください。また、この場合、出力は角度のラジアンになります。同様に、三角形の 180 度の代わりに pi ラジアンになります。