NAV导航网格寻路(4) -- 生成nav网格
这篇是转的文章,原文 http://blianchen.blog.163.com/blog/static/131056299201037102315211/ 假设上图是一个游戏地图,红色的区域是不可行走的区域,浅灰色区域是可行走区域,要想在游戏中实现nav寻路,必须将可行走区域转化为nav网格并保存为一种固定形式的数据,如下图浅红色的三角形。 nav网格必须是凸多边形,这里使用三角型,当然也可以使用4边形。下面介绍一种任意多边形的三角化算法。算法来自论文《平面多边形域的快速约束 三角化》 作者:曾薇 孟祥旭 杨承磊 杨义军。详细内容请参考该论文。 先来看几个定义: A. 我们称点 p3 为直线 p1p2 的 可见点 ,其必须满足下面三个条件: (1) p3 在边 p1p2 的右侧 (顶点顺序为顺时针); (2) p3 与 p1 可见,即 p1p3 不与任何一个约束边相交; (3) p3 与 p2 可见 B. DT点 在一个约束Delaunay三角形中,其中与一条边相对的顶点称为该边的DT点。 确定 DT 点的过程如下: Step1. 构造 Δp1p2p3 的外接圆 C(p1,p2,p3)及其网格包围盒 B(C(p1,p2,p3)) Step2. 依次访问网格包围盒内的每个网格单元: 对未作当前趟数标记的网格单元进行搜索,并将其标记为当前趟数 若某个网格单元中存在可见点 p, 并且