日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HDU1756(判断点在多边形内外)

發布時間:2024/4/11 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU1756(判断点在多边形内外) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:http://acm.hdu.edu.cn/showproblem.php?pid=1756

bool IsOnline(Point p,Segment s) /** 判斷點p是否在線段s上 */ {if(fabs(cross(s.a,p,s.b))<=EPS&&min(s.a.x,s.b.x)<=p.x&&p.x<=max(s.a.x,s.b.x)&&min(s.a.y,s.b.y)<=p.y&&p.y<=max(s.a.y,s.b.y))return true;return false; }bool Segment_crossing(Segment u,Segment v) /** 判斷兩線段是否相交 */ {return((max(u.a.x,u.b.x)>=min(v.a.x,v.b.x))&&(max(v.a.x,v.b.x)>=min(u.a.x,u.b.x))&&(max(u.a.y,u.b.y)>=min(v.a.y,v.b.y))&&(max(v.a.y,v.b.y)>=min(u.a.y,u.b.y))&&(cross(v.a,u.b,u.a)*cross(u.b,v.b,u.a)>=0)&&(cross(u.a,v.b,v.a)*cross(v.b,u.b,v.a)>=0));}bool Inside(Point t,Point p[],int n) /*判斷點t是否在點集p所圍成的多邊形內*/ {Segment seg;Segment pp;int num=0;Point MM; /*定義無窮點*/MM.y=t.y;MM.x=INF;pp.a=t;pp.b=MM; /*構造一條平行于x軸的以p為端點的右射線pp*/for(int i=0;i<n;i++){seg.a=p[i];seg.b=p[(i+1)%n];if(IsOnline(t,seg)) return true; /*點p在邊上*/if(fabs(seg.a.y-seg.b.y)<EPS) continue; /*水平*/if(IsOnline(seg.a,pp)) /*邊的一端點在射線上*/{if(seg.a.y>seg.b.y) num++;}else if(IsOnline(seg.b,pp)){if(seg.b.y>seg.a.y) num++;}else if(Segment_crossing(pp,seg))num++;}if(num%2==1)return true;return false; }


?

總結

以上是生活随笔為你收集整理的HDU1756(判断点在多边形内外)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。