码迷,mamicode.com
首页 > 其他好文 > 详细

计算几何知识整理

时间:2018-07-19 22:55:54      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:return   blank   计算几何   cout   bdc   ble   abc   code   main   

1、判断一个点是否在三角形内

  把这个点与三角形的顶点连线,算出这三个小三角形的面积之和与大三角形对比

    

double gs(double x1,double x2,double x3,double y1,double y2,double y3)
{
    return abs((x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2)));
}
int pd()
{
    double sabc=gs(po[1].x,po[2].x,po[3].x,po[1].y,po[2].y,po[3].y)*100;
    double sadb=gs(po[1].x,po[2].x,po[4].x,po[1].y,po[2].y,po[4].y)*100;
    double sadc=gs(po[1].x,po[3].x,po[4].x,po[1].y,po[3].y,po[4].y)*100;
    double sbdc=gs(po[2].x,po[3].x,po[4].x,po[2].y,po[3].y,po[4].y)*100;
    double tot=sadb+sadc+sbdc;
    if(sadb==0||sadc==0||sbdc==0)
        return 3;
    if(tot==sabc)
        return 1;
    if(tot!=sabc)
        return 2;
    return 2; 
}

2、皮克定理

  皮克定理是指一个计算点阵中顶点在格点上的多边形面积公式,该公式可以表示为2S=2a+b-2,其中a表示多边形内部的点数,b表示多边形边界上的点数,S表示多边形的面积。

    

int gcd(int a,int b)
{
    while(b>0)
    {
        int c=a%b;
        a=b;
        b=c;
    }
    return a;
}
int main()
{
    cin>>n>>m>>p;
    b+=gcd(n,m);
    b+=p-1;
    b+=gcd(abs(n-p),m);
    s=(p*m);
    a=s-b+2;
    cout<<a/2;
    return 0;
}

 

计算几何知识整理

标签:return   blank   计算几何   cout   bdc   ble   abc   code   main   

原文地址:https://www.cnblogs.com/SpeedZone/p/9338865.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!