c++写一个函数定,传入三个点(x1,y1),(x2,y2),(x3,y3)计算三角形面积(DeepSeek总结)
以下是使用C++编写的计算三角形面积的函数,使用三个点的坐标作为参数:
向量叉积公式
#include <cmath>
double calculateTriangleArea(double x1, double y1,
double x2, double y2,
double x3, double y3) {
// 使用向量叉积公式计算三角形面积
// 面积 = |(x2-x1)(y3-y1) - (x3-x1)(y2-y1)| / 2
double area = std::fabs((x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1)) / 2.0;
return area;
}
海伦公式
#include <cmath>
double calculateTriangleArea(double x1, double y1,
double x2, double y2,
double x3, double y3) {
// 计算三边长度
double a = std::sqrt(std::pow(x2 - x1, 2) + std::pow(y2 - y1, 2));
double b = std::sqrt(std::pow(x3 - x2, 2) + std::pow(y3 - y2, 2));
double c = std::sqrt(std::pow(x1 - x3, 2) + std::pow(y1 - y3, 2));
// 计算半周长
double s = (a + b + c) / 2.0;
// 使用海伦公式计算面积
double area = std::sqrt(s * (s - a) * (s - b) * (s - c));
return area;
}
使用实例及对比
使用示例:
#include <iostream>
int main() {
double x1 = 0.0, y1 = 0.0;
double x2 = 4.0, y2 = 0.0;
double x3 = 0.0, y3 = 3.0;
double area = calculateTriangleArea(x1, y1, x2, y2, x3, y3);
std::cout << "三角形面积: " << area << std::endl;
return 0;
}
两种方法的比较:
-
向量叉积法(推荐):
- 计算量小,效率高
- 避免了开方运算的精度损失
- 代码简洁
-
海伦公式法:
- 更直观,易于理解
- 但需要计算三次开方,精度损失可能稍大
两个函数都能正确计算三角形面积,但第一个方法(向量叉积)在性能和精度方面通常更优。
浙公网安备 33010602011771号