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 可视化
每月131次下载
用于 2 crates
51KB
984 行
fdg-sim
Rust的力导向图模拟。
Crates
名称 | 版本 | 文档 | 许可证 | 描述 |
---|---|---|---|---|
fdg-sim |
运行布局引擎(模拟)并管理节点的位置。 | |||
fdg-macroquad |
一个实时与图交互的演示可视化器。 (在线查看) | |||
fdg-img |
为您的图提供简单SVG渲染器的库。 | |||
fdg-wasm |
用于在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!("-----------------------")
}
}
N
、E
和Ty
是什么?
您可能已经注意到,例如Simulation
、ForceGraph
和Force
这样的结构和类型具有泛型类型参数<N, E, Ty>
。
N
:节点权重(存储在Node
的data
中)。E
:边权重(直接存储在图的边中)。Ty
:边类型,Directed
或Undirected
(默认设置)。
这些类型名称来自petgraph文档这里。因为Ty
默认设置,所以您大多数时候不需要处理它。
依赖项
~7MB
~150K SLoC