Open singleclown opened 3 years ago
1.博客中提到线与节点重叠的点,即是不可走的点,这句话不太明白。
假设红色点是当前遍历到的点,绿色两个点 1、2 是下一步可能加入 Open list 的点
先把当前点与 1、2 分别用线连起来。
可以看到跟点 1 的连线穿过了节点(实线矩形),与节点重叠了,所以点 1 不能加入 Open list
而点 2 没有与节点重叠,可以加入 Open list 。
2.博客中提到的中垂直线,一个矩形不是有两根么,怎么取舍的,不太明白
起点、终点做十字延长线组成虚线矩形
对于虚线矩形,取垂直于起点、终点所在节点边的两条边(也就是左右两条边)
这两条边的中点(绿色的两个点)也是可能的拐点
3.这个项目有react版本么,不太看的明白,我目前需要在项目里使用你的这个路径逻辑,谢谢
这个项目已经没有维护了,也没有 react 版本
这个项目的代码写得挺烂的,算法部分也有点问题,只有折线这部分思路可以参考一下
博客中的也有些遗漏,拐点可能出现的地方不止文中说的 16 个
谢谢您的指导。1.确实,节点b在不同的方位角时,拐点个数是不只16个的。2.线与节点重叠的点,即是不可走的点,是不是我可以理解为该线段的与矩形的交点个数必须小于2。3.那我想问问有木有后期迭代的版本呢4.我看了项目中的代码,有点分不清生成路径的算法步骤,和文章中提到的算法逻辑有点不一样,目前我想从该项目中获取路径生成的算法逻辑,楼主能否帮忙讲讲项目中代码生成的逻辑步骤。
抱歉,最近比较忙,一直没回复
线与节点重叠的点,即是不可走的点,是不是我可以理解为该线段的与矩形的交点个数必须小于2。
是这样,跟起点、终点连线的线段与矩形有一个交点,其他线段与矩形没有交点
那我想问问有木有后期迭代的版本呢
这是在前司开发的东西,本来就只有我一个人在搞,有点力不从心,短期内没有迭代的计划,抱歉
楼主能否帮忙讲讲项目中代码生成的逻辑步骤。
路径生成的核心就是在 A* 的基础上做一些调整
https://github.com/wsfe/flowchart/blob/master/src/utils/a-star/index.ts#L38
主要是这个函数,传入起点跟终点的坐标,返回起点到终点路径所有拐点组成的数组,找不到路径就返回 null
做的调整有:
f
相同的情况做一些处理(代码里这边有点问题,有时候会多一个拐点,需要改进)getWalkableNodes
会将待加入 open list 的点过滤一遍,这边就是判断线段与矩形有多少交点的地方你也可以参考一些比较有名的库,比如 G6 之类的,代码会比这个项目好很多😃
1.博客中提到线与节点重叠的点,即是不可走的点,这句话不太明白。 2.博客中提到的中垂直线,一个矩形不是有两根么,怎么取舍的,不太明白 3.这个项目有react版本么,不太看的明白,我目前需要在项目里使用你的这个路径逻辑,谢谢