计算三角形面积

GitHub跳转原题关系图返回列表

使用鞋带公式计算三点三角形面积并取绝对值。

OJ: noi_openjudge

题目 ID: ch0103-17

难度:入门

标签:数学几何python

日期: 2026-07-30 23:01

题意

输入三角形三个顶点坐标,输出面积,保留 2 位小数。

思路

鞋带公式给出两倍有向面积:x1y2+x2y3+x3y1x1y3x2y1x3y2x_1y_2+x_2y_3+x_3y_1-x_1y_3-x_2y_1-x_3y_2。顶点顺逆时针会改变符号,面积必须非负,因此取绝对值后除以 2。

代码

Python代码

python
x1, y1, x2, y2, x3, y3 = map(float, input().split())
twice_area = x1 * y2 + x2 * y3 + x3 * y1 - x1 * y3 - x2 * y1 - x3 * y2
print(f"{abs(twice_area) / 2:.2f}")

C++代码

cpp
/* 
三角形的三个顶点坐标求其面积的公式为:
S=(1/2)*(x1y2+x2y3+x3y1-x1y3-x2y1-x3y2)
 * */
#include <cstdio>

int main(){
    double x1,y1,x2,y2,x3,y3;
    scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
    double ans = (x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2)/2;
    printf("%0.2lf\n",ans);
    return 0;
}

复杂度

时间复杂度和额外空间复杂度均为 O(1)O(1)

总结

坐标面积公式算出的是有向面积;求几何面积时别遗漏 abs