zoukankan      html  css  js  c++  java
  • 算法竞赛模板 图形面积计算

    ①三角形-海伦公式(已知三边)

    formula

    公式中a,b,c分别为三角形三边长,p为半周长,S为三角形的面积。

    ps:因为有根号的出现,精度损失较大!!

    double STriangle(double a,double b,double c)
    {
        double p=(a+b+c)*0.5;
        double s=sqrt(p*(p-a)*(p-b)*(p-c));
        return s;
    } 

    ②三角形-二阶行列式算法(已知三点坐标)

    设A(x1,y1),B(x2,y2),C(x3,y3) 在坐标系中中顺序为三点按逆时针排列;

    公式:S = fabs( 0.5*[(x1y2-x2y1) + (x2y3-x3y2) + (x3y1-x1y3)] )

    struct point{
        double x,y;
    };
    double STriangle(point a,point b,point c)
    {
        return 0.5*fabs((a.x*b.y-b.x*a.y)+(b.x*c.y-c.x*b.y)+(c.x*a.y-a.x*c.y));
    } 

    ③正多边形-通式(已知边长)

    假设正多边形边长是x

    (1) 把正n边形先分成n个三角形

    (2) 每个小三角形对应的圆心角是2π/n,所以三角形的高就是 (x/2)/tan(π/n)

    (3) 三角形面积是 1/2*x*(x/2)/tan(π/n) = x²/[4tan(π/n)]

    (4) 从而正n边形面积是 S = nx²/[4tan(π/n)]

    #define pi acos(-1)
    double pic(int n,double x)
    {
        return n*x*x/(4.0*tan(pi/n));
    }
  • 相关阅读:
    马拦过河卒
    最小生成树 kruskal算法
    链表,关键是结构体的快排
    Shortest Prefixes 字典树
    串的匹配
    A Beautiful Meadow
    Tiling
    邻接矩阵的宽度遍历
    邻接矩阵的深度遍历
    Form1.frm
  • 原文地址:https://www.cnblogs.com/kannyi/p/9051611.html
Copyright © 2011-2022 走看看