代码之家  ›  专栏  ›  技术社区  ›  Aly Elhaddad

如何获得等腰三角形中的第三点坐标?

  •  0
  • Aly Elhaddad  · 技术社区  · 10 年前

    等腰三角形ABC
    AB=AC=d_1
    BC=d_2

    A = (x_1, y_1)  
    B = (x_2, y_2)  
    C = (x_3, y_3)  
    

    角度BAC=
    角度ABC=角度ACB=

    我想要一个x_3和y_3的方程(我知道会有两个值)
    x_3=??
    y_3=??

    2 回复  |  直到 10 年前
        1
  •  2
  •   Aly Elhaddad    9 年前

    我可以解决这个问题。解决方案的关键是 Cartesian Coordinate System 以及 Polar Coordinate System .

    x_3 = AB * Cos(Φ) + x_1
    y_3 = AB * Sin(Φ) + y_1
    
        2
  •  0
  •   HEKTO    10 年前

    首先,你需要找到三角形对称轴的交点 BC 边-让我们表示这一点 D 及其坐标 (x, y) 。然后将有两个向量:

    AD = (x - x1, y - y1)
    BD = (x - x2, y - y2)
    

    这些向量应满足两个条件。条件#1为 AD BD 正交性,其可以表示为它们的点积等于零:

    (x - x1) * (x - x2) + (y - y1) * (y - y2) = 0
    

    对于条件#2,可以使用角度Phi或 公元前 侧面-这取决于您,看起来您在输入数据方面有一定的灵活性。具有角度的条件表示,半角Phi的正切等于向量的长度 BD公司 除以矢量的长度 公元 :

    sqrt((x - x2)^2 + (y - y2)^2) / sqrt((x - x1)^2 + (y - y1)^2) = tan(Phi / 2)
    

    如果你知道 公元前 长度提前,条件#2将更简单-它只是说向量的长度 BD公司 等于 d2 除以二:

    sqrt((x - x2)^2 + (y - y2)^2) = d2 / 2
    

    所以,你会得到一个包含两个变量的二次方程组 x y 。一般情况下很难解决这样的系统,但这种情况稍微简单一点,因为没有交叉积 x(x) y 那里

    计算完点后 D 第三个顶点( C )可以使用向量方程找到三角形的坐标:

    C = B + 2 * BD