4

円の上に三角形 ABC があり、A が円の中心で、B と C が同じ円の境界である 2 点であると仮定すると、この三角形について次のことがわかります。

  1. 2-d A の座標値 (x1,y1) つまり (357,257)
  2. 2-d B の座標値 (x2,y2) つまり (93,169)
  3. A から B までの距離は 278 (円の半径)
  4. A から C までの距離は 278 (円の半径)
  5. BからCまでの距離は244
  6. 角度 ∠BAC ≡ ∠CAB ≡ ∠A = 52°

問題は次のとおりです。

点 C (x3,y3) の 2 次元座標値を見つける方法 ???

4

2 に答える 2

1

Aポイントに対してBポイントを52°回転させることができます(ラジアンを使用することを忘れないでください)。別の方向に回転する必要がある場合は、角度記号を変更してください。

x3=x1+(x2-x1)*Cos(52)-(y2-y1)*Sin(52)
y3=y1+(x2-x1)*Sin(52)+(y2-y1)*Cos(52)
于 2013-02-01T03:45:38.397 に答える
0

別の見方をすれば、円が中心にある(357、357)、円の外側に1つの点があり、円の周りを何度も前進したいということかもしれません。(5)<=>(6)(または、制約が一貫していないと思います)のようです。

制約により2つの答えが許可されるため、当然2つの解決策があります。両方を一緒に描画すると、円の隣接するスライスのように見えます。

最も簡単な解決策は、おそらくアークタンを使用してAからBまでの線分の水平から角度を取得し、それに52を加算または減算し、sin/cosを使用して円の外側に新しい点を取得することです。

例(Cでは、象限を正しく覚えていると仮定)

float angleOfAB = atan2f(B.y - A.y, B.x - A.x);
float angleOfAC = angleOfAB + 52.0f * M_PI / 180.0f; // in radians

// could use squartf here if the radius is unknown

Position C;
C.x = A.x + 278.0f * cos(angleOfAC);
C.y = A.y + 278.0f * sin(angleOfAC);
于 2013-02-01T01:03:05.160 に答える