已知直角三角形的两点坐标和两条边长求第三点坐标 java
时间: 2023-09-16 13:06:38 浏览: 150
三角形求第三边 C++实验
假设已知直角三角形的两个顶点坐标为 (x1, y1) 和 (x2, y2),第三个顶点坐标为 (x3, y3),其中直角在 (x2, y2) 处,另外两条边长分别为 a 和 b。
根据勾股定理,我们可以得到以下两个方程:
(x3 - x2)^2 + (y3 - y2)^2 = a^2
(x3 - x1)^2 + (y3 - y1)^2 = b^2
我们可以将上述两个方程化简为:
x3^2 - 2*x2*x3 + x2^2 + y3^2 - 2*y2*y3 + y2^2 = a^2
x3^2 - 2*x1*x3 + x1^2 + y3^2 - 2*y1*y3 + y1^2 = b^2
将上述两个方程相减,可以消去 x3^2 和 y3^2,得到:
-2*x2*x3 + x2^2 - 2*y2*y3 + y2^2 - (-2*x1*x3 + x1^2 - 2*y1*y3 + y1^2) = a^2 - b^2
化简后可以得到:
x3 = (a^2 - b^2 + x1^2 - x2^2 + y1^2 - y2^2) / (2*(x1 - x2))
y3 = ((a^2 - b^2 + x1^2 - x2^2 + y1^2 - y2^2) / (2*(y1 - y2)) - x3*(x1 - x2)) / (y2 - y1)
以下是 Java 代码实现:
```
public static double[] calcThirdPoint(double x1, double y1, double x2, double y2, double a, double b) {
double x3 = (a*a - b*b + x1*x1 - x2*x2 + y1*y1 - y2*y2) / (2*(x1 - x2));
double y3 = ((a*a - b*b + x1*x1 - x2*x2 + y1*y1 - y2*y2) / (2*(y1 - y2)) - x3*(x1 - x2)) / (y2 - y1);
return new double[]{x3, y3};
}
```
你可以将两个已知顶点坐标和两条边长传入该方法,即可得到第三个顶点坐标。
阅读全文