16 个版本 (8 个破坏性)

0.9.1 2022年12月17日
0.9.0 2022年10月8日
0.8.0 2022年9月8日
0.4.0 2022年7月30日

#173 in 可视化

Download history 36/week @ 2024-03-11 67/week @ 2024-03-18 26/week @ 2024-03-25 72/week @ 2024-04-01 24/week @ 2024-04-08 24/week @ 2024-04-15 32/week @ 2024-04-22 10/week @ 2024-04-29 25/week @ 2024-05-06 144/week @ 2024-05-13 32/week @ 2024-05-20 25/week @ 2024-05-27 28/week @ 2024-06-03 58/week @ 2024-06-10 23/week @ 2024-06-17 20/week @ 2024-06-24

每月131次下载
用于 2 crates

MIT 许可证

51KB
984

fdg-sim

Rust的力导向图模拟。

访问项目页面获取更多信息。

screenshot

Crates

名称 版本 文档 许可证 描述
fdg-sim Latest version Documentation MIT 运行布局引擎(模拟)并管理节点的位置。
fdg-macroquad Latest version Documentation GPL-3.0 一个实时与图交互的演示可视化器。 (在线查看)
fdg-img Latest version Documentation GPL-3.0 为您的图提供简单SVG渲染器的库。
fdg-wasm NPM Package View Readme MIT 用于在JavaScript中使用fdg-sim的简单Webassembly包装。

基本示例

use fdg_sim::{ForceGraph, ForceGraphHelper, Simulation, SimulationParameters};

fn main() {
    // initialize a graph
    let mut graph: ForceGraph<(), ()> = ForceGraph::default();

    // add nodes to it
    let one = graph.add_force_node("one", ());
    let two = graph.add_force_node("two", ());
    let _three = graph.add_force_node("three", ());
    graph.add_edge(one, two, ());

    // create a simulation from the graph
    let mut simulation = Simulation::from_graph(graph, SimulationParameters::default());

    // your event/render loop
    for frame in 0..50 {
        // update the nodes positions based on force algorithm
        simulation.update(0.035);

        // render (print) your nodes new locations.
        println!("---- frame {frame} ----");
        for node in simulation.get_graph().node_weights() {
            println!("\"{}\" - {:?}", node.name, node.location);
        }
        println!("-----------------------")
    }
}

NETy是什么?

您可能已经注意到,例如SimulationForceGraphForce这样的结构和类型具有泛型类型参数<N, E, Ty>

  • N:节点权重(存储在Nodedata中)。
  • E:边权重(直接存储在图的边中)。
  • Ty:边类型,DirectedUndirected(默认设置)。

这些类型名称来自petgraph文档这里。因为Ty默认设置,所以您大多数时候不需要处理它。

依赖项

~7MB
~150K SLoC