美文网首页
poj1031 计算几何

poj1031 计算几何

作者: 暖昼氤氲 | 来源:发表于2019-11-02 11:57 被阅读0次
/*
Time:2019.11.2
Author: Goven
type:计算几何 
err:
ref:https://blog.csdn.net/hering_linux/article/details/74510588
    https://www.cnblogs.com/dengeven/p/3229136.html
    注意dl,a的含义 
    怎样理解ref中的dl用da来表示:dl位微分,先求l关于a的表达式,l = s*tan(a),dl即对l求导 
知识点:
    1.atan() -- atan2() 区别:https://blog.csdn.net/chengkaizone/article/details/50558347 
*/
#include<iostream>
#include<cmath> 
#define PI 3.1415926
using namespace std;

double x[105], y[105];
double angle(double x0, double y0, double x1, double y1) {
    double a = atan2(y0, x0);
    double b = atan2(y1, x1);
    if (a - b > PI) b += 2 * PI;//顶点在3,4象限,顺时针往下走
    if (b - a > PI) a += 2 * PI;//顶点在3,4象限,逆时针往上走
    return a - b; 
} 
int main()
{
    double k, h, t = 0, max = 0, min = 0;
    int n;
    cin >> k >> h >> n;
    for (int i = 0; i < n; i++) {
        cin >> x[i] >> y[i];
    }
    x[n] = x[0], y[n] = y[0];
    
    for (int i = 1; i <= n; i++) {
        t += angle(x[i-1], y[i-1], x[i], y[i]);
        if (t > max) max = t;
        if (t < min) min = t;
        if (max - min >= 2 * PI) {
            max = min + 2 * PI;
            break; 
        }
    }
    printf("%.2lf\n", k * h * (max - min));
    return 0;
}


相关文章

  • poj1031 计算几何

  • 计算几何

    球体积交 && 球体积并

  • 计算几何

    数据处理纪录

  • 计算几何

    极限 POJ 1981: Circle and Points POJ 1418: Viva Confetti题解链...

  • 计算几何

  • 计算几何汇总

    此篇以汇总计算几何资源与主体脉络,便于以后查询学习。计算几何,邓俊辉学堂在线Python中的计算几何 脉络 计算几...

  • 计算几何基础

    判断点是否在线段上、判断两条线段是否相交 这里采用向量的解法。有2个概念:向量的内积和外积。内积又称为点积dot ...

  • 计算几何模板

  • 计算几何初步

    一、叉积叉积的计算是线段方法的核心。对于向来p1和p2,叉积是由点(0,0)、p1、p2和p1+p2构成的平行四边...

  • 计算几何总结

    1、点积 a·b的几何意义为a在b上的投影长度乘以b的模, a·b=|a||b|cosθ,其中θ为a,b之间的夹角...

网友评论

      本文标题:poj1031 计算几何

      本文链接:https://www.haomeiwen.com/subject/wdbcbctx.html