友情提示:380元/半年,儿童学编程,就上码丁实验室。
本期的副标题:《障碍物的判断及处理》
在地图中有大量的不可逾越的障碍物,诸如篱笆、树木、NPC等,如何判断这些障碍物?如何处理不能穿越这些障碍物呢?这就是本期要分享的关于这个问题的算法:面积法
基本数学模型是这样的,将障碍物描述成一个多边形,然后判断一个点是否在这个多边形内部;解决方法就是先利用鞋带公式算出这个多边形的面积,然后依次算出这个点到多边形各个相邻两点所组成的三角形的面积的和;判断这个两个面积是否相等,相等则证明这个点在多边形的内部,不等则证明这个点在多边形的外部。
图有点丑,凑合着看吧
-
有了思路接下来就是数据的存储方式和处理了,先展示数据的存放;各个障碍物(多边形)的位置信息分别放在两个列表里。
-
还要有一个列表用来解析这些数据存放格式;分别是地图编号、障碍物起始坐标编号与顶点个数,每一个地图数据还要设置个结束标识符。
-
接下来的任务就是通过索引的信息遍历障碍物的各个顶点计算面积
-
计算当前坐标点到障碍物各个顶点所组成的三角形的面积和
-
循环检测当前坐标与障碍物之间的关系,如果二者面积相等,将状态参数设置为不可穿越
本系列只提供素材分享,不分享源代码,抱歉!~
素材链接: https://pan.baidu.com/s/1vaYrN0UKi3EeapRL9mH0hQ 提取码: vyh1
指导视频:
转自公众号:
嘻嘻哈哈学编程