c语言判断三角形坐标系,浙大版《C语言程序设计(第3版)》题目集 习题3-5 三角形判断 (15 分)...

给定平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形。1​​,y​1​​)、(x​2​​,y​2​​)、(x​3​​,y​3​​),检验它们能否构成三角形

输入格式:

输入在一行中顺序给出六个[−100,100]范围内的数字,即三个点的坐标x1、y1、x2、y2、x3、y3。(。x1,y1)、(x2,y2)、(x3,y3)1​​、y​1​​、x​2​​、y​2​​、x​3​​、y​3​​。

输出格式:

若这3个点不能构成三角形,则在一行中输出“Impossible”;若可以,则在一行中输出该三角形的周长和面积,格式为“L = 周长, A = 面积”,输出到小数点后2位。

输入样例1:

4 5 6 9 7 8

输出样例1:

L = 10.13, A = 3.00

输入样例2:

4 6 8 12 12 18

输出样例2:

Impossible

思路:先用两点间距离公式求出三边边长。(d=√[(x₂ - x₁)²+(y₂ - y₁)²])

再用海伦公式判断是否能组成三角形,并求出面积。代码如下:

#include

#include

int main()

{

double x1 ,x2, x3, y1, y2, y3, a, b, c, L, A, s, delta;

scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);

a=sqrt(pow(x1-x2,2)+pow(y1-y2,2));//两点间距离公式,下同。

b=sqrt(pow(x2-x3,2)+pow(y2-y3,2));

c=sqrt(pow(x1-x3,2)+pow(y1-y3,2));

s=(a+b+c)/2;

delta=(s-a)*(s-b)*(s-c);//用delta判别是否能成为三角形

if(delta<=0)

printf("Impossible\n");

else

{

L=2*s;

A=sqrt(s*delta);

printf("L = %.2lf, A = %.2lf\n",L,A);

}

return 0;

}

科普:海伦-秦九韶公式

希羅公式(Heron's formula或Hero's formula),又译希罗公式、希伦公式、海龙公式,亦称“海伦-秦九韶公式”。此公式是亚历山大港的海伦发现的,并可在其于公元60年的《Metrica》中找到其证明,利用三角形的三条边长来求取三角形面积。亦有认为早于阿基米德已经懂得这条公式,而由于《Metrica》是一部古代数学知识的结集,该公式的发现时期很有可能先于海伦的著作。

假设有一个三角形,边长分别为f13f068df656c1b1911ae9f81628c49a6181194d,三角形的面积7daff47fa58cdfd29dc333def748ff5fa4c923e3可由以下公式求得:f2040da62a4f48c9f502e3f38e44133524401c00,其中787a98dac5681f383514fc1bd5b4d8e561a3fd21。中国南宋末年数学家秦九韶发现或知道等价的公式,其著作《数书九章》卷五第二题即三斜求积。“问沙田一段,有三斜,其小斜一十三里,中斜一十四里,大斜一十五里,里法三百步,欲知为田几何?”答曰:“三百十五顷.”其术文是:“以小斜幂并大斜幂,减中斜幂,余半之,自乘于上;以小斜幂乘大斜幂,减上,余四约之为实,……开平方得积。”若以大斜记为ffd2487510aa438433a2579450ab2b3d557e5edc,中斜记为f11423fbb2e967f986e36804a8ae4271734917c3,小斜记为86a67b81c2de995bd608d5b2df50cd8cd7d92455,秦九韶的方法相当于下面的一般公式:

2df3b70366c3a74d8f8c0cf0a1318caae7571c46,其中8a82e6284fedb32392e7cd3a5d0284907898bb0a

像其他中国古代的数学家一样,他的方法没有证明。根据现代数学家吴文俊的研究,秦九韶公式可由出入相补原理得出。一些中国学者将这个公式称为秦九韶公式。

由于任何a601995d55609f2d9f5e233e36fbe9ea26011b3b边的多边形都可以分割成ff40d66ad535411eedb9c686a9008a5089c35ac0个三角形,所以海伦公式可以用作求多边形面积的公式。比如说测量土地的面积的时候,不用测三角形的高,只需测两点间的距离,就可以方便地导出答案。

各种证明如下:

利用三角公式和代数式变形来证明

与海伦在他的著作《Metrica》中的原始证明不同,在此我们用三角公式和公式变形来证明。设三角形的三边f13f068df656c1b1911ae9f81628c49a6181194d的对角分别为0ce2acf22b93dfbd22373336bd9c22dbd98a49d6,则余弦定理为

90d013f8ae80e83f4fe4a843989cb3bab8bfc5e0

利用和平方、差平方、平方差等公式,从而有

95b3ef2caa93db677cfa147b18e43e4018d9609f

ceaa2802798acb26663a184abdc14ecaa1f23cf5

利用勾股定理和代数式变形来证明

63e31005a312984ee8bc7bcc2affeef2.png

15a0f7ad5c50ad94fcd4128c77068a704b49519e

c9708cb99d2c91911577e2de3c24cd368c381d13

d814adb63d63d1852765e23a60a589db17cb309c

f8dcb715492c07b74a8e4aa5c24b81a04d9811f4

31b84a229e3a0ca622f95fb4de1a6840c5522e21

3d196fa4bd0844cb46e2db39e1664797b39956fe

1a1b6efc8d7cc72d1b6f075cdeb4dca8.png

用旁心来证明

58805a9b89aaaa3ada8b6e455fc9ecbd7af3edac中,bc1fed8ab115e042a18de09a949a6a02fa4a1df8

535ea7fc4134a31cbe2251d9d3511374bc41be9f为内心,6e6a272dc891d4705cb41de97485a0fffc944fa9为三旁切圆。

36ea2bb1118b0ee72c2edba946f02c2dd786f15a

d364dad59d4123b582a58497dc06557b7a0a490c四点共圆,并设此圆为圆9d70e1d0d87e2ef1092ea1ffe2923d9933ff18fc

535ea7fc4134a31cbe2251d9d3511374bc41be9f做铅直线交650fedad268814c3e14377171e917b73a0698aceb4dc73bf40314945ff376bd363916a738548d40a,再延长31f4cbf5e777bbdc6f68ba61cc5d900ecb70f3b9,使之与圆9d70e1d0d87e2ef1092ea1ffe2923d9933ff18fc交于8752c7023b4b3286800fe3238271bbca681219ed点。再过83b5cb24870dadbb0efdf2e6d864ef853a0f1f89做铅直线交650fedad268814c3e14377171e917b73a0698ace4b0bfb3769bf24d80e15374dc37b0441e2616e33点。

先证明fb7b175380b9b069358c546cf42782cea5618b7b为矩形,

9cddf25c161351c22c06fe2479fd8e5d43a83210,又7fa727779f7c5d4f37fca91df73237360af270f3(圆周角相等)。d2bdf410ee31cf2604f6ce7dedb63b9f790d7d21为矩形。因此,10050e335c78d1e9a9a5aa0ebb8ccf6e8e757443

dba1efa38d0196d1c77aee8429aa6ef0b742e02a内切圆半径319c231aee3b8db888c78c43dbc60bb19a9f1b06b95bf59409028195cdf3e8dc54595a42d6866eb7旁切圆半径8aac9b5c8355c48835ab8452df2567d94aa07c93。且易知b356bd7a59e61213b44ccce0c4fc6cc6a9a1b18c。由圆幂性质得到:463b81583c432e3e32ab0f8d0a95fd49d6f15447。故632c6dd7b66d149c0f0d55b98f1ad3be702229e0d771eccab395176faabfd85426ce8b8703a17c21

来源:维基百科-海伦-秦九韶公式(https://zh.wikipedia.org/wiki/%E6%B5%B7%E4%BC%A6%E5%85%AC%E5%BC%8F)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值