嗨,我有幾何問題,這讓我瘋狂。我想確定「等腰直角三角形」(α= 45°;β= 45°;γ= 90°)中一個頂點的位置。確定「等腰直角三角形」的頂點
我有a,b,c,h和A和B的位置(和引起角度)。唯一缺少的是x,y方面的C。有人可以支持我嗎?
嗨,我有幾何問題,這讓我瘋狂。我想確定「等腰直角三角形」(α= 45°;β= 45°;γ= 90°)中一個頂點的位置。確定「等腰直角三角形」的頂點
我有a,b,c,h和A和B的位置(和引起角度)。唯一缺少的是x,y方面的C。有人可以支持我嗎?
這裏是只適用於45°-45°-90°三角形的代碼 - 它需要修改其他三角形。
請注意,您只需要座標爲A
和B
。 c
然後是這兩點之間的距離,h
是c/2
,並且a
和b
都是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
絕對輝煌。這正是我所期待的。 – user1234
這是另一個版本,它更簡單一些,而且計算效率也更高。這個想法是,h
是c
在這個三角形正好一半:
dx = Bx - Ax
dy = By - Ay
Cx = Ax + 0.5 * (dx - dy)
Cy = Ay + 0.5 * (dy + dx)
我讀了關於矩陣和旋轉那裏使用。 - 即將三角形首先旋轉至湖泊生活更容易。用'正弦/餘弦'等來做數學。反過來旋轉。代數和公式應該出來嗎? –
我正在投票結束這個問題,因爲它是關於[math.se]而不是編程或軟件開發。 – Pang
此舉會很棒(有可能嗎?)。但問題是編程背景,即使它沒有寫在問題中。答案反映了這一點,並提出了一種Python方法。 – user1234