zoukankan      html  css  js  c++  java
  • 计算几何知识整理

    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;
    }
  • 相关阅读:
    工厂模式
    装饰器模式
    策略模式
    代理模式
    建造者模式
    单例模式
    观察者模式
    JVM运行时数据区
    Export to excel
    C#网络编程(同步传输字符串) Part.2 [转自JimmyZhang博客]
  • 原文地址:https://www.cnblogs.com/SpeedZone/p/9338865.html
Copyright © 2011-2022 走看看