判断点是否在面内(java版)

判断点是否在面内(java版)

ID:40812477

大小:45.00 KB

页数:5页

时间:2019-08-08

判断点是否在面内(java版)_第1页
判断点是否在面内(java版)_第2页
判断点是否在面内(java版)_第3页
判断点是否在面内(java版)_第4页
判断点是否在面内(java版)_第5页
资源描述:

《判断点是否在面内(java版)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、importjava.util.ArrayList;importjava.util.List;/*****2012-5-25下午4:37:31*/publicclassSystemTaskJob{doubleINFINITY=1e10;doubleESP=1e-5;intMAX_N=1000;ListPolygon;//计算叉乘

2、P0P1

3、×

4、P0P2

5、doubleMultiply(Pointp1,Pointp2,Pointp0){return((p1.x-p0.x)*(p2.y-p0.y)-(p2

6、.x-p0.x)*(p1.y-p0.y));}//判断线段是否包含点pointprivatebooleanIsOnline(Pointpoint,LineSegmentline){return((Math.abs(Multiply(line.pt1,line.pt2,point))

7、ebooleanIntersect(LineSegmentL1,LineSegmentL2){return((Math.max(L1.pt1.x,L1.pt2.x)>=Math.min(L2.pt1.x,L2.pt2.x))&&(Math.max(L2.pt1.x,L2.pt2.x)>=Math.min(L1.pt1.x,L1.pt2.x))&&(Math.max(L1.pt1.y,L1.pt2.y)>=Math.min(L2.pt1.y,L2.pt2.y))&&(Math.max(L2.pt1.y,L2.pt2

8、.y)>=Math.min(L1.pt1.y,L1.pt2.y))&&(Multiply(L2.pt1,L1.pt2,L1.pt1)*Multiply(L1.pt2,L2.pt2,L1.pt1)>=0)&&(Multiply(L1.pt1,L2.pt2,L2.pt1)*Multiply(L2.pt2,L1.pt2,L2.pt1)>=0));}/*射线法判断点q与多边形polygon的位置关系,要求polygon为简单多边形,顶点逆时针排列如果点在多边形内:返回0如果点在多边形边上:返回1如果点在多边形外:返回2*

9、/publicintInPolygon(Listpolygon,Pointpoint){intn=polygon.size();intcount=0;LineSegmentline=newLineSegment();line.pt1=point;line.pt2.y=point.y;line.pt2.x=-INFINITY;for(inti=0;i

10、ide.pt2=polygon.get((i+1)%n);if(IsOnline(point,side)){return1;}//如果side平行x轴则不作考虑if(Math.abs(side.pt1.y-side.pt2.y)side.pt2.y)count++;}elseif(IsOnline(side.pt2,line)){if(side.pt2.y>side.pt1.y)count++;}e

11、lseif(Intersect(line,side)){count++;}}if(count%2==1){return0;}else{return2;}}publicstaticvoidmain(String[]args){SystemTaskJobsystemTaskJob=newSystemTaskJob();Listpolygon=newArrayList();Pointpoint1=newPoint(4,9);Pointpoint2=newPoint(7,10);Pointpo

12、int3=newPoint(8,2);Pointpoint4=newPoint(6,8);Pointpoint5=newPoint(6,9);Pointcheckpoint=newPoint(7,11);polygon.add(point1);polygon.add(point2);polygon.add(point3);polygon.add(point4);polyg

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。