使用三角形顶点中的两个坐标来计算第三个坐标的坐标

时间:2012-02-09 01:16:44

标签: trigonometry

我知道三角形中两个顶点的两个坐标(未与轴对齐),我正在尝试计算第三个坐标。

          a
     B ------- C
       \      |
        \     |
C'       \    |
        c \   | b
           \  |
            \ |
             \|
              A

我知道 A B 的坐标, a c 的长度,以及角度 C 将始终为直角。我相信 C 的坐标只能有两种可能的解决方案;上面绘制的那个, C 的一个反映在 c 线上,大约在 C'。我想计算两个位置。

修改

三角形的来源是this diagram

我知道顶点 A ,圆圈的中心 B ,圆的半径( a ),以及来自Pythag的( B - A ),我知道 c 的长度。我试图找到顶点的一条线与圆的每一边相切的点, C C'

This似乎是我问题的答案;任何人都可以详细说明'给定直角三角形的两边,很容易找到第三边的长度和方向。'。

4 个答案:

答案 0 :(得分:1)

  

我知道A和B的坐标,以及a和c的长度。由此,我相信C

的坐标只能有两种可能的解决方案

事实并非如此。 C的位置有无数个选择,因为你不知道b的长度。

例如:

C
| 
| 
| 
| 
| 
B
\      
 \     
  \    
c  \   
    \  
     \ 
      \
       A

如果您将C连接到A,您仍然保持这些已知长度......

为了使其成为现实,你还需要知道其中一个角度(例如它是一个直角三角形),或b的长度。

答案 1 :(得分:0)

很容易:因为C角是PI / 2然后是b=sqrt(c*c-a*a)所以你知道a,b,c的长度。

C和C&C的坐标。 =两个圆圈的交叉点:

  1. 中心B半径a
  2. center A radius b
  3. 这里解决了例如// A = P1,B = P0,C = P3:https://math.stackexchange.com/questions/187107/calculate-coordinates-of-3rd-point-vertex-of-a-scalene-triangle-if-angles-and

    基本条件:if (a<c)否则它没有解决方案。

答案 2 :(得分:-1)

如果您知道它将是一个直角三角形,那么您就知道x和y值将取自其他两个点。

Point coordsForCompletingTriangleTop(Point a, Point b) {
    return new Point(a.x,b,y);
}

Point coordsForCompletingTriangleBottom(Point a, Point b) {
    return new Point(b.x,a,y);
}

如果不能保证它是一个直角三角形,那么你需要更多的信息。需要B的长度,C的长度或BCA的角度。

答案 3 :(得分:-2)

如果假设a和b是矩形的对角

a = (xa, ya)
b = (xb, yb)

然后右上方的矩形点为c1 = (max(xa,xb), max(ya,yb)) 左下方的矩形点为c2 = (min(xa,xb), min(ya,yb))

假设xa != xbya != yb

                    (xa, ya) A              C1 (max(xa, xb), max(ya, yb))
                               o----------o
                               |\         |
                               | \        |
                               |  \       |
                               |   \      |
                               |    \     |
                               |     \    |
                               |      \   |
                               |       \  |
                               |        \ |
                               o----------o
(min(xa, xb), min(ya, yb)) C2               B (xb, yb)

如果你的对角线走向另一条路(为了测试这个看xa&gt; xb),你需要在x上交换min for max

(min(xa, xb), max(ya, yb))  C3              A'
                               o----------o
                               |         /|
                               |        / |
                               |       /  |
                               |      /   |
                               |     /    |
                               |    /     |
                               |   /      |
                               |  /       |
                               | /        |
                               o----------o
                           B'               C4 (max(xa, xb), min(ya, yb))

如果你感兴趣,全套解决方案实际上都在圈子上:

Set of solutions

要计算这一点,假设我们有两个点A = (xa, ya)B = (xb, yb)。然后这个圆的中心点是c = (0.5 (xa + xb), 0.5 (ya + yb)) - 只是A和B的中点。圆的半径是r = sqrt( (xb - xa)^2 + (yb - ya)^2) / 2 - 使用毕达哥拉斯定理得到线的长度并将其减半。然后,p = c + (rcos(u), rsin (u))可以为某个角度u定义圆圈上的任何点。有两个角度可以为您提供p = Ap = B点,因此u的这些值不是很好的解决方案。您可以写出等式并解决这两个点,以便为您提供不能使用的u值。