Power System Platform  2026w10a-beta
Loading...
Searching...
No Matches
GraphAutoLayout.h
1// Code based in: "Weighted graphs: generate a layout in C++"
2// https://rodic.fr/blog/c-weighted-graph-layout-fruchterman-reingold/
3
4#ifndef GRAPHAUTOLAYOUT_H
5#define GRAPHAUTOLAYOUT_H
6
7#include <cmath>
8//#include <vector>
9#include <wx/gdicmn.h>
10#include <wx/progdlg.h>
11
12// class ParseMatpower;
13#include "../forms/ImportForm.h"
14
16{
17 public:
19 wxRealPoint position;
20 wxRealPoint displacement;
21 };
22
24 GraphLayoutNode &node1;
25 GraphLayoutNode &node2;
26 float weight;
27 };
28
30 GraphAutoLayout(std::vector<ParseMatpower::BusData*> busData, std::vector<ParseMatpower::BranchData*> branchData);
32
33 void CalculatePositions(int iterations, double scale);
34
35 protected:
36 void AddLink(size_t index1, size_t index2, float weight = 1.f);
37 void Compute(size_t iterations);
38
39 std::vector<GraphLayoutNode> m_nodes;
40 std::vector<GraphLayoutEdge> m_edges;
41
42 std::vector<ParseMatpower::BusData*> m_busData;
43 std::vector<ParseMatpower::BranchData*> m_branchData;
44};
45
46#endif // GRAPHAUTOLAYOUT_H