A lightweight C++ library for graph visualization and pathfinding using SFML. Create, visualize, and analyze graphs with an intuitive interface.
Легковесная C++ библиотека для визуализации графов и поиска путей с использованием SFML. Создавайте, визуализируйте и анализируйте графы с помощью интуитивного интерфейса.
English:
- Create vertices and edges with custom positions, colors, and sizes
- Support for both directed and undirected edges
- Weighted edges with visual weight display
- Dijkstra's algorithm with path highlighting
- Find vertices by screen coordinates (for interactive applications)
- Clean separation of graph logic from visualization
Русский:
- Создание вершин и рёбер с настраиваемыми позициями, цветами и размерами
- Поддержка ориентированных и неориентированных рёбер
- Взвешенные рёбра с отображением веса
- Алгоритм Дейкстры с подсветкой найденного пути
- Поиск вершин по координатам (для интерактивных приложений)
- Чистое разделение логики графа и визуализации
- C++17 compiler
g++ -std=c++17 -Iinclude \
your_file.cpp \
src/Graph.cpp src/Vertex.cpp src/Edge.cpp src/GraphPart.cpp \
-o your_bin \
-lsfml-graphics -lsfml-window -lsfml-systemsfml_gm/
├── include/ # Headers / Заголовочные файлы
├── src/ # Source files / Исходные файлы
├── examples/ # Usage examples / Примеры использования
│ ├── simple_graph.cpp
│ └── random_graph.cpp
├── assets/ # Resources (fonts) / Ресурсы (шрифты)
└── README.md
add_vertex(Vertex*)/remove_vertex(Vertex*)add_edge(from, to, direction, thickness, weight, color)dijkstra(start, target)/dijkstra_highlight(start, target)find_vertex_at(position, tolerance)draw(target)
set_name(string)/set_radius(float)/set_color(Color)get_position()/get_adj_vertices()
set_weight(float)/set_direction(int)connects(v1, v2)/get_other_end(vertex)
English:
- SFML — Simple and Fast Multimedia Library
- DejaVu Fonts — Free fonts
Русский:
- SFML — простая и быстрая мультимедийная библиотека
- DejaVu Fonts — свободные шрифты
MIT License — free for personal and commercial use.
MIT Лицензия — свободно для личного и коммерческого использования.