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

poj 3813 Euclid

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

poj 3813 Euclid

#include<stdio.h>#include<math.h>struct node{       double x,y;};node a,b,c,d,e,f,g;double S1,lA,lB,lC,kAC,kAB,dHAB,dAB,sum,lA1,lB1,lC1,kAB1,h;double dxy(node xx,node yy){       return sqrt((xx.x-yy.x)*(xx.x-yy.x)+(xx.y-yy.y)*(xx.y-yy.y));}void CS1()          //面积{       double p,a1,b1,c1;       a1=dxy(d,e);       b1=dxy(e,f);       c1=dxy(d,f);       p=(a1+b1+c1)/2;       S1=sqrt(p*(p-a1)*(p-b1)*(p-c1));}void CL()         //直线{       if(b.x-a.x==0)       {   lA=(b.y-a.y);   lC=b.x*(b.y-a.y);       }       else if(b.y-a.y==0)       {   lB=(a.x-b.x);   lC=b.y*(b.x-a.x);       }       else       {   lA=(b.y-a.y);   lB=(a.x-b.x);   lC=b.y*(b.x-a.x)-b.x*(b.y-a.y);       }}void CL2()         //直线{       if(c.x-a.x==0)       {   lA1=(c.y-a.y);   lC1=c.x*(c.y-a.y);       }       else if(c.y-a.y==0)       {   lB1=(a.x-c.x);   lC1=c.y*(c.x-a.x);       }       else       {   lA1=(c.y-a.y);   lB1=(a.x-c.x);   lC1=c.y*(c.x-a.x)-c.x*(c.y-a.y);       }}int main(){       node H;       while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf",&a.x,&a.y,&b.x,&b.y,&c.x,&c.y,&d.x,&d.y,&e.x,&e.y,&f.x,&f.y)!=EOF)       {   if(!a.x&&!a.y&&!b.x&&!b.y&&!c.x&&!c.y&&!d.x&&!d.y&&!e.x&&!e.y&&!f.x&&!f.y)          break;   CS1();   CL();   CL2();   h=S1/dxy(a,b);   if(a.x==b.x)   {          if(a.y==c.y)          {      if(a.x<c.x)      {  H.x=a.x+h;  H.y=a.y;      }      else      {  H.x=a.x-h;  H.y=a.y;      }          }          else          {      if(a.x<c.x)      {  H.x=a.x+h;  H.y=(-1)*(lC1+lA1*H.x)/lB1;      }      else      {  H.x=a.x-h;  H.y=(-1)*(lC1+lA1*H.x)/lB1;      }          }   }   else if(a.x==c.x)   {          if(a.y==b.y)          {      if(a.y<c.y)      {  H.x=a.x;  H.y=a.y+h;      }      else      {  H.x=a.x;  H.y=a.y-h;      }          }          else          {      if(a.y<c.y)      {  H.x=a.x;  H.y=(h*sqrt(lA*lA+lB*lB)-lA*H.x-lC)/lB;  if(H.y<a.y)         H.y=((-1)*h*sqrt(lA*lA+lB*lB)-lA*H.x-lC)/lB;      }      else      {  H.x=a.x;  H.y=(h*sqrt(lA*lA+lB*lB)-lA*H.x-lC)/lB;  if(H.y>a.y)         H.y=((-1)*h*sqrt(lA*lA+lB*lB)-lA*H.x-lC)/lB;      }          }   }   else if(a.y==c.y)   {          if(a.x<c.x)          {      H.y=a.y;      H.x=(h*sqrt(lA*lA+lB*lB)-lB*H.y-lC)/lA;      if(H.x<a.x)  H.x=((-1)*h*sqrt(lA*lA+lB*lB)-lB*H.y-lC)/lA;          }          else          {      H.y=a.y;      H.x=(h*sqrt(lA*lA+lB*lB)-lB*H.y-lC)/lA;      if(H.x>a.x)  H.x=((-1)*h*sqrt(lA*lA+lB*lB)-lB*H.y-lC)/lA;          }   }   else if(a.y==b.y)   {          if(a.y<c.y)          {      H.y=a.y+h;      H.x=(-1)*(lC1+lB1*H.y)/lA1;          }          else          {      H.y=a.y-h;      H.x=(-1)*(lC1+lB1*H.y)/lA1;          }   }   else   {          if(a.x<c.x)          {      H.x=(h*sqrt(lA*lA+lB*lB)-lC+(lB*lC1/lB1))/((lA*lB1-lB*lA1)/lB1);      if(H.x<a.x)  H.x=((-1)*h*sqrt(lA*lA+lB*lB)-lC+(lB*lC1/lB1))/((lA*lB1-lB*lA1)/lB1);      H.y=(-1)*(lC1+lA1*H.x)/lB1;          }          else          {      H.x=(h*sqrt(lA*lA+lB*lB)-lC+(lB*lC1/lB1))/((lA*lB1-lB*lA1)/lB1);      if(H.x>a.x)  H.x=((-1)*h*sqrt(lA*lA+lB*lB)-lC+(lB*lC1/lB1))/((lA*lB1-lB*lA1)/lB1);      H.y=(-1)*(lC1+lA1*H.x)/lB1;          }   }   printf("%.3f %.3f %.3f %.3fn",(b.x-a.x)+H.x,(b.y-a.y)+H.y,H.x,H.y);       }       return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/366833.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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