2017-07-15 180 views
-1

嗨,我有幾何問題,這讓我瘋狂。我想確定「等腰直角三角形」(α= 45°;β= 45°;γ= 90°)中一個頂點的位置。確定「等腰直角三角形」的頂點

E.g.在這個例子中: enter image description here

我有a,b,c,h和A和B的位置(和引起角度)。唯一缺少的是x,y方面的C。有人可以支持我嗎?

+0

我讀了關於矩陣和旋轉那裏使用。 - 即將三角形首先旋轉至湖泊生活更容易。用'正弦/餘弦'等來做數學。反過來旋轉。代數和公式應該出來嗎? –

+1

我正在投票結束這個問題,因爲它是關於[math.se]而不是編程或軟件開發。 – Pang

+0

此舉會很棒(有可能嗎?)。但問題是編程背景,即使它沒有寫在問題中。答案反映了這一點,並提出了一種Python方法。 – user1234

回答

1

這裏是只適用於45°-45°-90°三角形的代碼 - 它需要修改其他三角形。

請注意,您只需要座標爲ABc然後是這兩點之間的距離,hc/2,並且ab都是c/sqrt(2)。這個Python代碼返回給定座標C的2元組(Cx, Cy),假設您想要C從矢量AB逆時針方向。如果您要順時針,請在計算中用帶負號的符號替換加號,該計算將定義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

這是另一個版本,它更簡單一些,而且計算效率也更高。這個想法是,hc在這個三角形正好一半:

dx = Bx - Ax 
dy = By - Ay 
Cx = Ax + 0.5 * (dx - dy) 
Cy = Ay + 0.5 * (dy + dx) 
相關問題