File indexing completed on 2025-11-30 09:40:27
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include <optional>
0012 #include <string>
0013 #include <variant>
0014 #include <vector>
0015
0016 #include "actsvg/core/defs.hpp"
0017 #include "actsvg/proto/cluster.hpp"
0018 #include "actsvg/styles/defaults.hpp"
0019
0020 namespace actsvg {
0021 namespace proto {
0022
0023 template <typename point3_type>
0024 struct trajectory {
0025
0026 using point3 = point3_type;
0027
0028
0029 point3_type _origin;
0030
0031
0032 point3_type _direction;
0033
0034
0035 std::vector<std::pair<point3_type, std::optional<point3_type>>> _path;
0036
0037
0038 scalar _origin_size = 0.;
0039 style::stroke _origin_stroke;
0040 style::fill _origin_fill;
0041
0042
0043 style::marker _path_arrow;
0044 style::stroke _path_stroke;
0045 };
0046
0047 template <typename point3_type>
0048 struct seed {
0049
0050
0051 std::vector<point3_type> _space_points;
0052
0053
0054 std::optional<trajectory<point3_type>> _trajectory;
0055
0056
0057 scalar _space_point_size = 5.;
0058 style::fill _space_point_fill;
0059 style::stroke _space_point_stroke;
0060 };
0061
0062 template <typename surface_type>
0063 struct track_state {
0064
0065 surface_type _surface;
0066
0067
0068 std::variant<cluster<1>, cluster<2>> _cluster;
0069 };
0070
0071 }
0072
0073 }