首先,想到的是:(底a*高h)/2
。
底:可以通过两点间的距离公式解决。
高:怎么办。。
想到另外一个只需知道边长的:海伦公式
q=(a+b+c)/2
s=
(
q
(
q
−
a
)
(
q
−
b
)
(
q
−
c
)
)
\sqrt (q(q-a)(q-b)(q-c))
(q(q−a)(q−b)(q−c))
#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std;
int main(){
float x1,x2,x3,y1,y2,y3,d1,d2,d3;
float a,b,c,d,e,f,s,q;
scanf("%f%f%f%f%f%f",&x1,&y1,&x2,&y2,&x3,&y3);
a=x1-x2;
b=y1-y2;
c=x1-x3;
d=y1-y3;
e=x2-x3;
f=y2-y3;
abs(a);
abs(b);
abs(c);
abs(d);
abs(e);
abs(f);
d1=sqrt(a*a+b*b);
d2=sqrt(e*e+f*f);
d3=sqrt(c*c+d*d);
q=(d1+d2+d3)/2;
s=sqrt(q*(q-d1)*(q-d2)*(q-d3));
printf("%.2f",s);
return 0;
}
之前犯了大忌,提前列好了q;
得跟着计算机的思维一步步理清楚;
后续:计算三角形面积公式,数学版部分:
1.已知三角形底a,高h,则
2.已知三角形三边a,b,c,则
(海伦公式)
3.已知三角形两边a,b,这两边夹角C,则
即两夹边之积乘夹角的正弦值。
4.设三角形三边分别为a、b、c,内切圆半径为r
则三角形面积
5.设三角形三边分别为a、b、c,外接圆半径为R
则三角形面积S=abc/4R
6.行列式形式
为三阶行列式,此三角形ABC在平面直角坐标系内A(a,b),B(c,d),C(e,f) ,这里ABC选取最好按逆时针顺序从右上角开始取,因结果一般都为正。否则,可能为负,但取绝对值就OK。
具体参考:
三角形面积公式。
[(https://baike.baidu.com/item/%E4%B8%89%E8%A7%92%E5%BD%A2%E9%9D%A2%E7%A7%AF%E5%85%AC%E5%BC%8F/8491990)