栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 2504 Bounding box

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 2504 Bounding box

#include<cstring>#include<cstdio>#include<iostream>#include<map>#include<algorithm>#include<cmath>using namespace std;const double INF=100000000;const double PI=acos(-1.0);int n;struct Point{    double x,y;}a,b,c,o,q;Point getOra(Point a,Point b,Point c){    double aa=2*(b.x-a.x);    double bb=2*(b.y-a.y);    double cc=b.x*b.x+b.y*b.y-a.x*a.x-a.y*a.y;    double dd=2*(c.x-b.x);    double ee=2*(c.y-b.y);    double ff=c.x*c.x+c.y*c.y-b.x*b.x-b.y*b.y;    Point ret;    ret.x=(bb*ff-ee*cc)/(bb*dd-ee*aa);    ret.y=(dd*cc-aa*ff)/(bb*dd-ee*aa);    return ret;}int main(){    int Case=1;    while(scanf("%d",&n)!=EOF)    {        if(n==0)return 0;        scanf("%lf%lf",&a.x,&a.y);        scanf("%lf%lf",&b.x,&b.y);        scanf("%lf%lf",&c.x,&c.y);        double co=cos(PI*2.0/(double)n);        double si=sin(PI*2.0/(double)n);        o=getOra(a,b,c);        //printf("%lf %lfn",o.x,o.y);        q.x=a.x-o.x;        q.y=a.y-o.y;        double hx,hy,lx,ly;        hx=hy=-INF;        lx=ly=INF;        for(int i=0;i<=n;i++){ hx=max(hx,o.x+q.x); hy=max(hy,o.y+q.y); lx=min(lx,o.x+q.x); ly=min(ly,o.y+q.y); Point temp=q; q.x=temp.x*co-temp.y*si; q.y=temp.x*si+temp.y*co;        }        printf("Polygon %d: %.3lfn",Case++,(hy-ly)*(hx-lx));    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/378480.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号