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;
}

两种方法的比较:

  1. 向量叉积法(推荐):

    • 计算量小,效率高
    • 避免了开方运算的精度损失
    • 代码简洁
  2. 海伦公式法

    • 更直观,易于理解
    • 但需要计算三次开方,精度损失可能稍大

两个函数都能正确计算三角形面积,但第一个方法(向量叉积)在性能和精度方面通常更优。

posted @ 2025-10-23 19:48  焦涛  阅读(1)  评论(0)    收藏  举报