基于c++ 求三维 三角形外心 代码2 不用向量法
时间: 2024-02-23 21:00:30 浏览: 78
如果不使用向量法,可以使用以下代码来计算三维三角形外心:
```
// 计算三维三角形外心
Point3D circumcenter(const Point3D& A, const Point3D& B, const Point3D& C) {
double a = (B - C).magnitude_squared();
double b = (C - A).magnitude_squared();
double c = (A - B).magnitude_squared();
double x = (a * (b + c - a) * A.x + b * (c + a - b) * B.x + c * (a + b - c) * C.x) / ((b + c - a) * A.x + (c + a - b) * B.x + (a + b - c) * C.x);
double y = (a * (b + c - a) * A.y + b * (c + a - b) * B.y + c * (a + b - c) * C.y) / ((b + c - a) * A.y + (c + a - b) * B.y + (a + b - c) * C.y);
double z = (a * (b + c - a) * A.z + b * (c + a - b) * B.z + c * (a + b - c) * C.z) / ((b + c - a) * A.z + (c + a - b) * B.z + (a + b - c) * C.z);
return Point3D(x, y, z);
}
```
其中,`Point3D` 表示三维空间中的点,`magnitude_squared` 函数表示向量长度的平方。该函数接受三个点作为参数,返回三角形的外接圆圆心。
值得注意的是,如果三角形退化为一条直线或一个点,那么该函数将返回其中一个点作为外心。
阅读全文