为了更好的查看资源依赖关系,有必要将资源数据和依赖关系按可视化的形式展现。
0x0 使用有向图作为数据结构
由于预制体资源依赖关系复杂,可能呈现网状关系,因此关系利用有向图的数据结构来表示是最合适的。
可视化界面中,资源用矩形表示,资源的依赖关系用连线和箭头表示
0x1 基于力导向的图布局算法
图的布局算法有很多,这里利用了基于力导向的布局算法。
这个算法的主要思想是将节点看作质点,模拟质点之间的斥力和引力关系,再加入阻力,然后进行迭代直到所有力达到力最终平衡状态,核心逻辑非常类似2d物理引擎。
算法中的主要需要模拟以下力:
斥力-库仑定律
具体来说,斥力使用了库仑定律,电荷之间的作用力,与距离的平方成反比,与电荷的电量成正比,这里电量我统一取1,方便利用库伦常数对力的大小做调整
引力-虎克定律
引力使用了弹簧力模拟,即虎克定律。力的大小和长度成正比,方向和弹簧伸长和压缩方向相反。
运动阻力
最后是运动阻力,如果没有运动阻力,所有质点最终很难达到静止状态。运动阻力和质点的速度成正比,方向和质点的速度方向相反。
调整物理参数得到布局结果
所以通过调整库伦常量,弹性常数和阻力系数这几个参数来调整布局最终的效果。
最后展示一下动态调整的效果。
标签:关系,依赖,阻力,算法,Unity,质点,可视化 From: https://www.cnblogs.com/terrynoya/p/17251247.html