有人知道apachespark graphx的强制三维图算法的实现吗?
我得到了一个必须可视化的图形,为了快速渲染,我想计算apachespark graphx中每个图形节点的3d坐标,然后将这些坐标作为输出传递给应用程序的渲染模块。
到目前为止,我只知道d3.js库可以提供这样的图形的3d渲染,但是它们非常有限,而且工作方式与我的需要完全相反——这些库采用图形节点和链接,并在javascript中实现所有坐标演算,这使得它对于任何大量的数据都毫无用处(如果图形超过100k节点)。我们的目标是找到一些算法或lib,它提供了一种方法来计算spark本身内3d空间中每个节点的坐标,从而使spark内的大量计算只向渲染模块暴露一个位置数组{nodeid,x,y,z}。
在我的例子中,图的每条边实际上是一个方向力(例如,从nodea到nodeb的力值为4,从nodeb到nodea的力值为2.1……)。算法的思想是执行以下操作:
从外部源预加载图形数据。此数据包括节点ID和方向链接(力值)
在计算开始之前:每个节点被分配一些随机的三维坐标初始值(x,y,z),最小差(delta)被定义为常数,最小行程距离(step)也被定义为常数
算法执行一组迭代计算,并为图坐标{nodeid,x,y,z}的每个节点计算一组坐标:对于每个节点和一组节点的力(入站和出站),它为一个节点找到所有这些力的结果向量,并将节点一步一步地移动到该向量
一旦所有节点的新坐标与上一次迭代的坐标之间的距离小于delta,则停止迭代
我知道,我上面的描述不太理想,可能看起来不太清楚,但是,也许观众中有人遇到了足够接近的东西来尝试。如果您能就如何使用apachespark graphx实现这些功能提供任何建议,并能参考任何类似的项目/存储库,我们将不胜感激
暂无答案!
目前还没有任何答案,快来回答吧!