确定“Isosceles Right Triangle”中的顶点

时间:2017-07-15 12:12:08

标签: math geometry

嗨,我有几何问题让我发疯。我想确定一个顶点在“Isosceles Right Triangle”中的位置(alpha = 45°; beta = 45°; gamma = 90°)。

E.g。在此图中: enter image description here

我有a,b,c,h和A和B的位置(并且导致角度)。唯一缺少的是x,y术语中的C.有人可以支持我吗?

2 个答案:

答案 0 :(得分:1)

以下代码仅适用于45°-45°-90°三角形 - 需要针对其他三角形进行修改。

请注意,您只需要AB的坐标即可。 c就是这两点之间的距离,hc/2ab都是c/sqrt(2)。这个Python代码返回一个2元组(Cx, Cy),给出坐标C,假设您希望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

答案 1 :(得分:1)

这是另一个版本,它更简单一些,计算效率也更高。我的想法是h恰好是此三角形中c的一半:

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