hdu 1221 Rectangle and Circle(矩形與圓焦點問題)

來源:互聯網
上載者:User

求平面內矩形與圓是否有焦點,分別求出圓點到矩形四個邊的交點,判斷交點是否在邊上

#include<iostream>#include<cmath>using namespace std;bool xiao(double x1,double x2){if(x1-x2<1e-8)return true;else false;}int main(){int num;double x,y,r,x1,y1,x2,y2;double zx1,zy1,zx2,zy2;cin>>num;for(int ii=0;ii<num;ii++){cin>>x>>y>>r>>zx1>>zy1>>zx2>>zy2;x1=zx1<zx2?zx1:zx2;x2=zx1<zx2?zx2:zx1;y1=zy1<zy2?zy1:zy2;y2=zy1<zy2?zy2:zy1;double rP=r*r;bool flag=false;if(rP-(x1-x)*(x1-x)>=0)  //左面{double  kai=sqrt(rP-(x1-x)*(x1-x));double t1=kai+y;double t2=0-kai+y;if((t1<=y2&&t1>=y1)||(t2<=y2&&t2>=y1))flag=true;}if(flag==false&&rP-(x2-x)*(x2-x)>=0) //右面{double  kai=sqrt(rP-(x2-x)*(x2-x));double t1=kai+y;double t2=0-kai+y;if((t1<=y2&&t1>=y1)||(t2<=y2&&t2>=y1))flag=true;}if(flag==false&&rP-(y1-y)*(y1-y)>=0) //下面{double  kai=sqrt(rP-(y1-y)*(y1-y));double t1=kai+x;double t2=0-kai+x;if((t1<=x2&&t1>=x1)||(t2<=x2&&t2>=x1))flag=true;}if(flag==false&&rP-(y2-y)*(y2-y)>=0)  //上面{double  kai=sqrt(rP-(y2-y)*(y2-y));double t1=kai+x;double t2=0-kai+x;if((t1<=x2&&t1>=x1)||(t2<=x2&&t2>=x1))flag=true;}if(flag)cout<<"YES"<<endl;else cout<<"NO"<<endl;}}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.