9

私はこれに何時間も費やしてきましたが、私の正気がゆっくりと滑っているのを感じることができます。ですから、どんな助けでも本当にありがたいです。できるだけ簡潔にしようと思います。

2D平面上に円があります。中心点(C)と半径(R)のデカルト座標を知っています。

私の混乱はこの問題から生じています。円の外側の平面上の点が提供されている場合。その点に最も近い円周上の点(P)を計算できます。

私がやりたいのは、円周上の2点の(x、y)座標を決定することです。それらをP1とP2と呼びましょう。P1とP2は円弧の両端です。円弧は固定長(X)です。Pは、P1とP2の中間点です。したがって、PからP1およびPからP2までの弧長は両方ともX/2です。

要するに:与えられたC、R、P、X; P1とP2を計算する必要があります。

私はこれをC++でコーディングしようとしていますが、提案や擬似コードは素晴らしいでしょう。

編集:Xは弧長であり、P1とP2の間の直線ではありません

4

3 に答える 3

4

円上では、角度thetaは弧の長さに対応しtheta * Rます。これは、弧が角度の範囲内にあることを意味しますtheta = X / R。だからあなたのポイントから始めれば

P = C + R * (sin(u), cos(u))

次に、次のように上下しtheta/2ます。

P1 = C + R * (sin(u + theta/2), cos(u + theta/2))

P2 = C + R * (sin(u - theta/2), cos(u - theta/2))
于 2010-11-05T23:53:23.267 に答える
3

角度θ(ラジアン)の範囲内にある弧の弧長はθRです。したがって、θ= X /(2R)の半角が必要です。次に、ベクトル(P -C)を取得し、それを±θの角度で回転させ、Cに追加してP1とP2を取得する必要があります。ベクトルをある角度で回転させるには、回転行列を掛けます。

したがって、擬似コードでは、次のようになります。

θ = X/(2R)
A = 2x2 rotation matrix corresponding to a rotation by θ radians
A' = transpose of A
P1 = C + A * (P - C)
P2 = C - A' * (P - C)
于 2010-11-05T23:57:45.617 に答える
0

役立つことがいくつかあります。コードを書くつもりはありませんが、解決策は三角形に基づいていると思います。検討:

どの半径も同じ長さです。

したがって、P1-P1-Cから描かれた三角形は二等辺三角形です。

接線は半径に垂直です。

今ここでそれを証明するのは難しいでしょうが、CからP1 / P2を通る線を、C->Pで円と交差する接線まで延長すると二等辺三角形も形成されます。

そこから簡単に理解できるはずです。

于 2010-11-06T00:07:09.080 に答える