代码之家  ›  专栏  ›  技术社区  ›  Bobby Jack

计算三角形第三点的坐标

  •  2
  • Bobby Jack  · 技术社区  · 15 年前

    好的,我知道这听起来像是应该在数学上问的。堆栈溢出。但这是我高中时忘记的令人尴尬的简单数学,而不是高级研究生的东西!

    我正在做一些图形编程,我有一个三角形。顺便说一句,这个三角形的两条边是相等的,但我不确定这是否相关。我有两个角(顶点)的坐标,但没有第三个角(这些坐标是屏幕上的像素,如果相关的话)。我知道这三条边的长度。

    如何确定未知顶点的坐标?

    2 回复  |  直到 15 年前
        1
  •  2
  •   codelark    15 年前

    对于斜三角形:c^2=a^2+b^2-2ab*cos(c)

    其中a、b、c是边的长度(不考虑长度) A,B,C是与字母相同的一侧相对的角。

    使用上面的公式计算出与已知端点之一的角度,然后使用角度、顶点位置和相邻边之间的角度来确定未知顶点的位置。

    问题的复杂性并不决定它应该在哪个网站上进行,只决定主题。所以你应该把这个问题转移到数学上来。

        2
  •  0
  •   Mads Elvheim Mads Elvheim    15 年前

    编辑:我之前有过一次严重的大脑放屁,但这应该行得通。 使用 law of cosines

    /* use the law of cosines to get the angle of CAB */
    c² = a² + b² - 2ab cos(Cangle)
    cos(Cangle) = (a²+b²-c²) / 2ab
    Cangle = acos((a²+b²-c²) / 2ab)
    
    AB = B.xy - A.xy;
    normalize(AB);
    len = length(AC)
    C.x = len*AB.x* cos(Cangle) * len*AB.y*sin(Cangle);
    C.y = len*AB.x*-sin(Cangle) * len*AB.y*cos(Cangle);