求三角形外接圆圆心坐标与半径c++
时间: 2023-12-18 22:03:42 浏览: 226
find-ciecle.rar_3W6_Halcon坐标_halcon C++_halcon circle_找圆心
假设三角形的三个顶点分别为 $A(x_1,y_1),B(x_2,y_2),C(x_3,y_3)$,则三角形外接圆的圆心坐标为 $(x,y)$,半径为 $r$,满足以下条件:
1. $(x - x_1)^2 + (y - y_1)^2 = (x - x_2)^2 + (y - y_2)^2$,即圆心到 $AB$ 中点的距离等于圆心到 $AC$ 中点的距离;
2. $(x - x_1)^2 + (y - y_1)^2 = r^2$,即圆心到 $A$ 点的距离等于半径;
3. 以此类推可以得到其他两个方程。
解这个方程组即可求出圆心坐标 $(x,y)$ 和半径 $r$。
C++ 代码如下:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
struct Point {
double x, y;
};
double Distance(const Point& p1, const Point& p2) {
return sqrt(pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2));
}
int main() {
Point A = {0, 0}, B = {3, 0}, C = {0, 4}; // 例子中的三角形
Point AB_mid = {(A.x + B.x) / 2, (A.y + B.y) / 2}; // AB 中点
Point AC_mid = {(A.x + C.x) / 2, (A.y + C.y) / 2}; // AC 中点
double k1 = (B.y - A.y) / (B.x - A.x); // AB 斜率
double k2 = (C.y - A.y) / (C.x - A.x); // AC 斜率
double x = (k1 * k2 * (A.y - C.y) + k2 * (A.x + B.x) - k1 * (B.x + C.x)) / (2 * (k2 - k1)); // 圆心 x 坐标
double y = (-1 / k1) * (x - AB_mid.x) + AB_mid.y; // 圆心 y 坐标
double r = Distance(A, {x, y}); // 圆半径
cout << "圆心坐标为:(" << x << ", " << y << ")" << endl;
cout << "圆半径为:" << r << endl;
return 0;
}
```
阅读全文