我知道三角形中两个顶点的两个坐标(未与轴对齐),我正在尝试计算第三个坐标。
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似乎是我问题的答案;任何人都可以详细说明'给定直角三角形的两边,很容易找到第三边的长度和方向。'。
答案 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的坐标。 =两个圆圈的交叉点:
这里解决了例如// 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 != 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&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))
如果你感兴趣,全套解决方案实际上都在圈子上:
要计算这一点,假设我们有两个点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值。