hdu 1756 判斷點在多邊形內

2022-06-02 11:15:09 字數 2222 閱讀 7790

模板題

1 #include2 #include3 #include4 #include5 #include6 #include7

#define lson l,mid,rt<<1

8#define rson mid+1,r,rt<<1|1

9#define root 1,n,1

10#define mid ((l+r)>>1)

11#define ll long long

12#define cl(a) memset(a,0,sizeof(a))

13#define ts printf("*****\n");

14using

namespace

std;

15const

int maxn=199999+9;16

int sum[maxn<<2],lsum[maxn<<2],rsum[maxn<<2

];17

intn,m,tt;

18const

double eps = 1e-8;19

const

double pi = acos(-1.0

);20

int sgn(double

x)21

26struct

point

2730 point(double _x,double

_y)31

34 point operator -(const point &b)const

3538

//叉積

39double

operator ^(const point &b)const

4043

//點積

44double

operator *(const point &b)const

4548

//繞原點旋轉角度b(弧度值),後x,y的變化

49void transxy(double

b)50

55};

56//

57struct

line

5861

line(point _s,point _e)

6265

//兩直線相交求交點

66//

第乙個值為0表示直線重合,為1表示平行,為0表示相交,為2是相交

67//

只有第乙個值為2時,交點才有意義

68 pair operator &(const line &b)const

6977

double t = ((s-b.s)^(b.s-b.e))/((s-e)^(b.s-b.e));

78 res.x += (e.x-s.x)*t;

79 res.y += (e.y-s.y)*t;

80return make_pair(2

,res);81}

82};

83bool

onseg(point p,line l)

8490

bool

inter(line l1,line l2)

91100

//*判斷點在任意多邊形內

101//

射線法,poly的頂點數要大於等於3,點的編號0~n-1

102//

返回值103

//-1:點在凸多邊形外

104//

0:點在凸多邊形邊界上

105//

1:點在凸多邊形內

106int inpoly(point p,point poly,int

n)107

126else

if(onseg(side.e,ray))

127130

else

if(inter(ray,side))

131 cnt++;

132}

133if(cnt % 2 == 1)return1;

134else

return -1

;135

}136

137point a[maxn],b;

138int

main()

139150 scanf("

%d",&m);

151for(i=0;i)

152158

else printf("

no\n");

159}

160}

161 }

hdu1756 判斷點是否在多邊形上

在計算幾何中,判斷點是否在多邊形上包括點在多邊行上,點在多邊形內兩種情況 如下,模板題 include include include include include include include include include include include include define n 1...

HDU1756 判斷點與多邊形的相對位置

題意 判斷點是否在給出的多邊形內 包括邊界 include include include include using namespace std const double eps 1e 8 判斷double型別 x 與0的大小 int dcmp double x int n,m,i,j,k,tem...

判斷點在多邊形內演算法

點和多邊形關係的演算法實現 好了,現在我們已經了解了向量叉積的意義,以及判斷直線段是否有交點的演算法,現在回過頭看看文章開始部分的討論的問題 如何判斷乙個點是否在多邊形內部?根據射線法的描述,其核心是求解從p點發出的射線與多邊形的邊是否有交點。注意,這裡說的是射線,而我們前面討論的都是線段,好像不適...