海伦公式判断点和三角形的关系

一 海伦公式

如果有一个三角形,它的三边分别为 $a, b ,c $, 则三角形的面积为 A = s ( s − a ) ( s − b ) ( s − c ) A = \sqrt{s(s-a)(s-b)(s-c)} A=s(sa)(sb)(sc) , s = a + b + c 2 s = \frac{a+b+c}{2} s=2a+b+c

二 判断一点和三角形的关系

三角形的三点为 A , B , C A, B, C A,B,C,我们需要判断的点是 D D D

如果 S △ A B C = S △ B C D + S △ A B D + S △ A C D S\triangle ABC = S\triangle BCD + S\triangle ABD + S\triangle ACD SABC=SBCD+SABD+SACD D D D △ A B C \triangle ABC ABC 的内部,否则 D D D 在三角形的外部

三 example and code

洛谷模版题

#include<iostream>
#include<cmath>
using namespace std;
int s,t,u,v,w,x,y,z;
char ch;
double m(int a,int b,int c,int d,int e,int f)//海伦公式算三角形面积
{
    double x,y,z,p;
    x=sqrt((a-c)*(a-c)+(b-d)*(b-d));
    y=sqrt((a-e)*(a-e)+(b-f)*(b-f));
    z=sqrt((c-e)*(c-e)+(d-f)*(d-f));
    p=(x+y+z)/2;
    return sqrt(p*(p-x)*(p-y)*(p-z));
}
int main()
{
    cin>>ch>>s>>ch>>t>>ch;//点A
    cin>>ch>>u>>ch>>v>>ch;//点B
    cin>>ch>>w>>ch>>x>>ch;//点C
    cin>>ch>>y>>ch>>z>>ch;//点D
    double abc,abd,acd,bcd;//几个三角形的面积
    abc=(int)m(s,t,u,v,w,x)*100;
    abd=(int)m(s,t,u,v,y,z)*100;
    acd=(int)m(s,t,w,x,y,z)*100;
    bcd=(int)m(u,v,w,x,y,z)*100;
    if((s==y&&t==z)||(u==y&&v==z)||(w==y&&x==z))
    {
        cout<<4;    //4
        return 0;
    }
    if(abd+acd+bcd>abc)
    {
        cout<<2;    //2
        return 0;
    }
    else
    {
        if(!abc||!abd||!acd||!bcd)
        {
            cout<<3;    //判断3
            return 0;
        }
        cout<<1;//1
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值