2017-07-15 20 views
-1

こんにちは、私は狂ったような幾何学的問題を抱えています。私は、「二等辺三角形」(α= 45°、β= 45°、γ= 90°)で1つの頂点の位置を決定したいと考えています。"二等辺三角形の三角形"の頂点を決定する

など。 enter image description here

私はa、b、c、hとAとBの位置(そして角度の原因)を持っています。欠落しているのは、x、y項のCだけです。誰かが私にこれをサポートできますか?

+0

私が行列についてアップ読み、そこ回転で使用します。アイデアはhは、この三角形でcのちょうど半分であるということです。すなわち、最初に三角形を回転させて湖の生活を楽にします。算術演算には 'sine/cosine'などを使います。回転を逆転させる。代数と数式はそれから出てくるはずです –

+1

プログラミングやソフトウェア開発ではなく、[math.se]についての話題なので、この質問を議論の対象外とすることにしました。 – Pang

+0

移動が素晴らしいでしょうか?しかし問題は、その質問に書かれていなくても、プログラミングの背景であった。その答えは、これを飛ばして、Pythonのアプローチを提案しました。 – user1234

答えて

1

ここでは、45°-45°-90°の三角形に対してのみ機能するコードです。他の三角形に対しては変更する必要があります。

ABの座標だけが必要です。 cは、これら2つの点の間の距離であり、hc/2であり、abはともにc/sqrt(2)です。このPythonコードはCをベクトルABから反時計回りにすることを想定して、Cの座標を与える2タプル(Cx, Cy)を返します。時計回りにしたい場合は、プラス記号をinclinationACを定義する計算のマイナス記号に置き換えます。これは基本的な三角法だけを使用し、各段階を示しています.Ed Heal氏のコメントのように他の方法がありますが、これはほとんどの人が理解しやすいはずです。

from math import sqrt, hypot, pi, cos, sin, atan2 

def corner_right_isoceles(Ax, Ay, Bx, By): 
    """Return the coordinates of the right-angle corner of a right 
    isosceles triangle if the other two vertices are the points 
    (Ax, Ay) and (Bx, By). The returned corner is counterclockwise 
    from the vector AB. 
    """ 
    c = hypot(By - Ay, Bx - Ax) 
    b = c/sqrt(2) 
    inclinationAB = atan2(By - Ay, Bx - Ax) 
    inclinationAC = inclinationAB + pi/4 
    Cx = Ax + b * cos(inclinationAC) 
    Cy = Ay + b * sin(inclinationAC) 
    return Cx, Cy 
+0

絶対に鮮やかです。それはまさに私が探していたものです。 – user1234

1

これは、もう少し簡単で、計算効率がはるかに優れた別のバージョンです。

dx = Bx - Ax 
dy = By - Ay 
Cx = Ax + 0.5 * (dx - dy) 
Cy = Ay + 0.5 * (dy + dx)