Trigonometry 使用三角形的两个坐标';s顶点以计算第三个顶点的坐标

Trigonometry 使用三角形的两个坐标';s顶点以计算第三个顶点的坐标,trigonometry,Trigonometry,我知道三角形中两个顶点的两个坐标(不与轴对齐),我正在尝试计算第三个顶点的坐标 a B ------- C \ | \ | C' \ | c \ | b \ | \ | \| A 我知道A和B的坐标,A和c的长度,角度c始终是直角。我相信对于C的坐标只有两种可能的解决方案;上面画

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

          a
     B ------- C
       \      |
        \     |
C'       \    |
        c \   | b
           \  |
            \ |
             \|
              A
我知道AB的坐标,Ac的长度,角度c始终是直角。我相信对于C的坐标只有两种可能的解决方案;上面画的一个,以及带有C的一个,反映了线C,大约在C'处。我想计算两个位置

编辑

三角形的来源如下所示

我知道顶点A、圆心B、圆半径(A),从毕达格的(B-A)我知道c的长度。我试图找到顶点的直线与圆的每一侧相切的点,CC'

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

我知道A和B的坐标,A和c的长度。由此,我相信对于C的坐标,只有两种可能的解

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

例如:

C
| 
| 
| 
| 
| 
B
\      
 \     
  \    
c  \   
    \  
     \ 
      \
       A
如果你把C连接到A,你仍然保持那些已知的长度


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

如果您知道它将是一个直角三角形,那么您就知道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的角度。

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

a = (xa, ya)
b = (xb, yb)
然后右上角的矩形点是
c1=(max(xa,xb),max(ya,yb))
左下角的矩形点是
c2=(min(xa,xb),min(ya,yb))

假设
xa!=xb
ya!=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>xb),则需要将x上的最小值替换为最大值

(min(xa, xb), max(ya, yb))  C3              A'
                               o----------o
                               |         /|
                               |        / |
                               |       /  |
                               |      /   |
                               |     /    |
                               |    /     |
                               |   /      |
                               |  /       |
                               | /        |
                               o----------o
                           B'               C4 (max(xa, xb), min(ya, yb))
如果您感兴趣,完整的解决方案实际上就在这个圆圈上:


为了计算这个,假设我们有两个点
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=A
p=B
,因此
u
的这些值不是好的解决方案。你可以写出方程,并对这两个点进行求解,得到你无法使用的u值。

这很简单:因为C角是PI/2,那么
b=sqrt(C*C-a*a)
所以你知道a,b,C的长度

C和C'的坐标=两个圆的交点:

  • 中心B半径a
  • 中心A半径b
  • 此处求解,例如//A=P1,B=P0,C=P3:


    基本条件:
    如果(a)它总是直角三角形吗?@minitech我想是的,否则这个问题就没什么意义了。你知道吗?@minitech是的,角度C总是直角。三角形不一定是直角与轴对齐;你的答案不考虑旋转?你必须假设轴对齐,否则没有唯一的结果。我在原始帖子中说过,我不是在寻找唯一的解决方案;我在寻找两个解决方案。我需要两个可能的C坐标。@user mine会给你这个结果,如果你可以假设三角形want与轴对齐。也就是说,
    AC
    与Y轴平行,
    AB
    与X轴平行。Rezzie所说的是,如果没有这个假设,它可能会旋转,C的坐标可能在无限多个不同的位置。@用户还请记住,我的会提供给您任何点都有一个面积为0的三角形,只要形成一条平行于任一轴的线。C将始终是直角。对不起,我忘了提到这个。长度(a,C)如果是固定的,则只有两种解决方案,请参见问题所附的图片。经过多次评论后,问题实际上发生了变化。原始问题假设有一条线连接两个点。第二条线和第三条线未知。如果已知直角三角形的两条边,则琐碎的毕达哥拉斯可以解决问题。