[从头学数学] 第269节 [计算几何] 点在多边形内
来源:互联网 发布:我的淘宝网上银行付款 编辑:程序博客网 时间:2024/05/21 09:03
剧情提要:
阿伟看到了一本比较有趣的书,是关于《计算几何》的,2008年由北清派出版。很好奇
它里面讲了些什么,就来看看啦。
正剧开始:
星历2016年09月21日 10:28:35, 银河系厄尔斯星球中华帝国江南行省。
本节到此结束,欲知后事如何,请看下回分解。
阿伟看到了一本比较有趣的书,是关于《计算几何》的,2008年由北清派出版。很好奇
它里面讲了些什么,就来看看啦。
正剧开始:
星历2016年09月21日 10:28:35, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起研究[计算几何]]。
<span style="font-size:18px;">#class Polygon(): #格式:path = [[-6, 9], [8, -7], [8, 3], [-6, 9]] def __init__(self, path): if (path[-1] != path[0]): path.append(path[0]); self.path = path; #顶点数量 self.vertNum = len(self.path)-1; self.vertex = []; self.edge = []; self.vertexCalc(); self.edgeCalc(); def vertexCalc(self): for i in range(self.vertNum): self.vertex.append(Point(self.path[i])); def getVertex(self): return self.vertex; def edgeCalc(self): for i in range(self.vertNum): self.edge.append(SegLine(self.path[i], self.path[i+1])); def getEdge(self): return self.edge; def pointInPolygon(self, point): #测试点左右两边截多边形的各边,得到的交点数都为奇数,说明测试点在多边形内 #反之在外面 oddNodes = False; #点在多边形的边上 if (Point(point) in self.vertex): return oddNodes; x, y = point[0], point[1]; j = self.vertNum - 1; for i in range(self.vertNum): p1 = self.vertex[i].value(); p2 = self.vertex[j].value(); px1, py1 = p1[0], p1[1]; px2, py2 = p2[0], p2[1]; if (((py1 < y and py2 >= y) or (py2 < y and py1 >= y)) and \ (px1 <= x or px2 <= x)): if ((px1+(y-py1)/(py2-py1)*(px2-px1)) < x): oddNodes = not oddNodes; j = i; return oddNodes; def tmp13(): #主端点 mainVert = [[[-10, -9], 0], [[-2, -9], 1], [[2, -9], 2], [[2, -7], 3], [[8, -7], 4], [[-2, -5], 5], [[2, -3], 6], [[6, -3], 7], [[4, -1], 8], [[4, 1], 9], [[0, 3], 10], [[2, 3], 11], [[6, 3], 12], [[8, 3], 13], [[-4, 5], 14], [[0, 5], 15], [[-6, 9], 16], [[6, 9], 17]]; len_vert = len(mainVert); poly = Polygon([[-2, -9], [6, -3], [6, 3], [2, -3], [0, 3], [-2, -9]]); answer = None; for i in range(len_vert): answer = poly.pointInPolygon(mainVert[i][0]); if answer == False: s = '不在'; else: s = '在'; print('点{0} {1}多边形内'.format(i, s));#</span>
<span style="font-size:18px;">#点0 不在多边形内点1 不在多边形内点2 不在多边形内点3 不在多边形内点4 不在多边形内点5 不在多边形内点6 不在多边形内点7 不在多边形内点8 在多边形内点9 不在多边形内点10 不在多边形内点11 不在多边形内点12 不在多边形内点13 不在多边形内点14 不在多边形内点15 不在多边形内点16 不在多边形内点17 不在多边形内#</span>
本节到此结束,欲知后事如何,请看下回分解。
0 0
- [从头学数学] 第269节 [计算几何] 点在多边形内
- [从头学数学] 第273节 [计算几何] 多边形求交集
- [从头学数学] 第275节 [计算几何] 多边形顶点的五种类型
- [从头学数学] 第277节 [计算几何] 任意多边形的内角
- [从头学数学] 第278节 [计算几何] 多边形周长和面积
- [从头学数学] 第283节 [计算几何] 多边形的单调块划分
- [从头学数学] 第284节 [计算几何] 生成随机多边形
- [从头学数学] 第286节 [计算几何] 多边形的布尔运算(上)
- [从头学数学] 第287节 [计算几何] 多边形的布尔运算(中)
- [从头学数学] 第288节 [计算几何] 多边形的布尔运算(下)
- [从头学数学] 第264节 [计算几何] 点和线段
- [从头学数学] 第282节 [计算几何] 相邻边和相邻点
- [从头学数学] 第240节 计算几何 整装待发
- [从头学数学] 第263节 [计算几何] 线段生成
- [从头学数学] 第267节 [计算几何] 路径规划
- [从头学数学] 第268节 [计算几何] 环形路径
- [从头学数学] 第271节 [计算几何] 凸包
- [从头学数学] 第274节 [计算几何] 顶点树
- 源码解析Android中View的layout布局过程
- Eclipse 快捷键 mac
- 我的课程
- 5_Android Training 学习笔记_ Android 网络连接与云服务
- 面向对象程序设计上机练习七(类和对象)
- [从头学数学] 第269节 [计算几何] 点在多边形内
- [ARM] [基础][编译]ARM的浮点功能历史分类和对应的编译选项
- setVisibility()参数
- oracle11g 导出表报EXP-00011:table不存在。
- Android View类中的生命周期是怎样的?
- Android蓝牙通讯模块
- Android第一行代码学习笔记六----手机多媒体
- Windows下 Nginx+Tomcat6+Memcached反向代理负载均衡(HTTP+TCP)
- Web Service (四) 手动发布Web Service接口-CXF与Spring集成(实战)