2

昔の学校で三角法を学んだにもかかわらず、三角法についての手がかりはありません。これはかなり簡単なはずですが、Web上の大量の三角法をトロールすると、頭が痛くなります:)だから、誰かが私を助けてくれるかもしれません...

タイトルは私がやりたいことを正確に説明しています。x1、y1とx2、y2の行があり、高度を指定して二等辺三角形を完成させるためにx3、y3を見つける関数が必要です。

明確にするために、線x1、y2-> x2、y2がベースになり、どの軸にも位​​置合わせされません(ランダムな角度になります)。

誰かがこれのための簡単な機能を持っていますか?

4

3 に答える 3

4

ベクトル (x1,y1)->(x2,y2) の法線を構築します。中点 ((x1+x2)/2,(y1+y2)/2) に置き、距離 h を出します。

法線は (-(y2-y1),x2-x1) のようになります。これを単位ベクトルにします ( http://en.wikipedia.org/wiki/Unit_vector )。

この単位ベクトルの h 倍を中点に追加します。

于 2008-12-07T22:55:18.430 に答える
2

3 番目の点は、底辺の垂直二等分線上にありaltitude、線から 1 単位離れています。

  1. x 座標と y 座標を平均して、ベースの中点を計算します。
  2. 高度の勾配を計算します: -dx/dy (dy/dx に垂直)。これでライン (点と勾配) ができました。
    • y - 私 = -dx/dy * (x - mx)
  3. 変数を距離式に代入します: d = sqrt(dx^2 + dy^2)
    1. d = sqrt((x - mx)^2 + (y - 私)^2)
    2. d = sqrt((x - mx)^2 + (-dx/dy * (x - mx))^2)
    3. d^2 = (x - mx)^2 + (-dx/dy * (x - mx))^2
    4. d^2 - (x - mx)^2 = (-dx/dy * (x - mx))^2
    5. ±sqrt(d^2 - (x - mx)^2) = -dx/dy * (x - mx)
    6. ±sqrt(d^2 - (x - mx)^2) * dy/dx = x - mx
    7. ±sqrt(d^2 - (x - mx)^2) * dy/dx + mx = x
    8. x = ±sqrt(d^2 - (x - mx)^2) * dy/dx + mx
  4. 直線方程式 (#2 から) を使用して、他の変数 (ここでは y) を計算します。
  5. これで 2 つのポイントが得られました。好きな方を選んで...

擬似コード:

dx = x1 - x2
midpoint = ((x1 + x2) / 2, (y1 + y2) / 2)
slope = -dx / (y1 - y2)
x = sqrt(altitude*altitude - dx*dx) / slope + midpoint.x
y = slope * (x - midpoint.x) + midpoint.y

これはおそらく最適な方法ではありません。それが機能するかどうかもわかりません。xD

于 2008-12-07T22:51:14.820 に答える
0

私が覚えているのは、二等辺三角形は辺の長さが等しく、底辺の角度が等しいということです。高さがあれば、これが交点になるため、最終的な座標が得られますよね?

于 2008-12-07T22:53:08.980 に答える