判断点是否在三角形内部(xdoj 1125)

先贴题目:xdoj1125

思路:给了三角形的三个顶点a,b,c,和一个点x;
判断abc的面积 是否= xab的面积+xbc的面积+xac的面积;

思路很简单。。。关键在于怎么求三角形面积。
一开始我的方法是:割补法,所求面积=矩形面积-三个直角三角形的面积。

然而我还是太天真。。。。在wa的我快哭了的时候,终于发现,这个方法解决不了钝角三角形啊啊啊啊啊啊啊~~!!

于是乎,亲爱的同志们,还是老老实实的用海伦公式吧。。。

上代码:

#include <bits/stdc++.h>

using namespace std;

double  area(double x1,double y1,double x2,double y2,double x3,double y3)
{
   double a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)),b=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)),c=sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
   return sqrt((a+b+c)*(a+b-c)*(a+c-b)*(b+c-a))/4.0;
}

int main()
{
    double x,y,x1,y1,x2,y2,x3,y3;
    while (scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3,&x,&y)!=EOF)
    {
        if (abs(area(x, y, x1, y1, x2, y2)+area(x, y, x1, y1, x3, y3)+area(x, y, x2, y2, x3, y3)-area(x1, y1, x2, y2, x3, y3))<0.001)
        {
            printf("Orz\n");
        }
        else  printf("stO\n");
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值