给出三点的坐标,求三角形面积(法一:海伦公式,法二:向量法(。。。还没搞懂)) | 您所在的位置:网站首页 › 海伦公式的海伦头像 › 给出三点的坐标,求三角形面积(法一:海伦公式,法二:向量法(。。。还没搞懂)) |
三角形面积
时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 给你三个点,表示一个三角形的三个顶点,现你的任务是求出该三角形的面积 输入 每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示三个点的横纵坐标。(坐标值都在0到10000之间) 输入0 0 0 0 0 0表示输入结束 测试数据不超过10000组 输出 输出这三个点所代表的三角形的面积,结果精确到小数点后1位(即使是整数也要输出一位小数位) 样例输入 0 0 1 1 1 3 0 1 1 0 0 0 0 0 0 0 0 0样例输出 1.00.5
这是个简单的数学几何题,我的做法是求出三条边的长度,然后用 海伦公式,求出面积,这个可能麻烦一点,但是比较稳当,大家都会 另外一种好方法,就是向量积的知识了:以两个相交向量为临边的 平行四边形的面积是这两个向量的向量积的模,也就是等于他们模的乘积乘上 他们夹角的正弦值。 代码: 海伦公式:
假设在平面内,有一个三角形,边长分别为a、b、c,三角形的面积S可由以下公式求得: S=√[p(p-a)(p-b)(p-c)] 而公式里的p为半周长: p=(a+b+c)/2 #include #include int main() { double x1,y1,x2,y2,x3,y3,a,b,c,s,p; while(~scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3)&&(x1||x2||x3||y1||y2||y3)) { a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); b=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)); c=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3)); p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); printf("%.1lf\n",s); } return 0; } 代码; #include int main() { double x1,y1,x2,y2,x3,y3,s; while(~scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3)&&(x1||x2||x3||y1||y2||y3)) { s=(x1*y2+y1*x3+x2*y3)-(x1*y3+y2*x3+y1*x2); if(s |
CopyRight 2018-2019 实验室设备网 版权所有 |