Files
qt5-legatus-legacy/Lts/Services/AreaEffectSimulation/TrajectorySplitter/trajectory_splitter.cpp
T
2026-08-13 18:33:10 +02:00

101 lines
4.2 KiB
C++
Executable File

/**
* @RDE_HEADER@
* TrajectorySplitter
* $Id$
* $HeadURL$
* $Author$
* Created by Norbert Thoden, ESVG, 2026-04-10
*/
#include "trajectory_splitter.h"
#include <QVector>
namespace AreaEffectSimulation
{
#ifdef NEVER
{ "xRelativ": 0, "yRelativ": 87, "zRelativ": 0, "zeit": 0 }
{ "xRelativ": 264.92901384887057, "yRelativ": 174.47292577550235, "zRelativ": 0.02662089743508293, "zeit": 0.42316757561829477 }
{ "xRelativ": 527.817117836265, "yRelativ": 259.39749108373843, "zRelativ": 0.10711867810716591, "zeit": 0.8671332156643488 }
{ "xRelativ": 788.7136308929233, "yRelativ": 341.7537090754077, "zRelativ": 0.24257733886856256, "zeit": 1.317025093437079 }
{ "xRelativ": 1047.6615285149353, "yRelativ": 421.51802443336, "zRelativ": 0.4341458137452195, "zeit": 1.7729216456145016 }
...
{ "xRelativ": 10668.292565257545, "yRelativ": 812.3118170374198, "zRelativ": 80.82322553052114, "zeit": 27.14152290057901 }
{ "xRelativ": 10810.450109000809, "yRelativ": 758.1014590452174, "zRelativ": 83.6238919660965, "zeit": 27.64070006753179 }
{ "xRelativ": 10951.756580024134, "yRelativ": 701.8127436432027, "zRelativ": 86.4672527220736, "zeit": 28.13993223448457 }
{ "xRelativ": 11004.943335671449, "yRelativ": 679.9994989836455, "zRelativ": 87.55287154361422, "zeit": 28.32863291589727 } <- "zeit": 28.32863291589727
{ "xRelativ": 11024.335485058064, "yRelativ": 671.9830718180636, "zRelativ": 87.92903026884116, "zeit": 28.420639771216415 }
{ "xRelativ": 11100.21984616728, "yRelativ": 639.7392557756232, "zRelativ": 89.40212615944367, "zeit": 28.821882126373755 }
...
{ "xRelativ": 11433.493907953312, "yRelativ": 273.536830677164, "zRelativ": 95.91385300842985, "zeit": 43.733363879070986 }
{ "xRelativ": 11433.486549507788, "yRelativ": 266.91692553984, "zRelativ": 95.9130829647681, "zeit": 44.23336387907098 }
{ "xRelativ": 11433.479681686724, "yRelativ": 261.6225051311806, "zRelativ": 95.91244688984187, "zeit": 44.633363879070984 }
{ "xRelativ": 11433.47022997119, "yRelativ": 255.00635849002902, "zRelativ": 95.91163415590303, "zeit": 45.13336387907098 }
{ "xRelativ": 11433.460096115776, "yRelativ": 248.39229789577348, "zRelativ": 95.91080763291724, "zeit": 45.63336387907098 }
// { "xRelativ": 11004.943335671449, "yRelativ": 679.9994989836455, "zRelativ": 87.55287154361422,"zeit": 28.32863291589727 } <- "zeit": 28.32863291589727
// { "xRelativ": 11043.727634444678, "yRelativ": 663.9667038330389, "zRelativ": 88.3051889940681, "zeit": 28.506460354460955 }
// { "xRelativ": 11119.006328411935, "yRelativ": 631.7585823372341, "zRelativ": 89.76652640827223, "zeit": 28.906818574224253 }
...
{ "xRelativ": 11499.121563240604, "yRelativ": 274.34404243874127, "zRelativ": 97.20466256494127, "zeit": 39.720062770644574 }
{ "xRelativ": 11499.266493362005, "yRelativ": 267.7249346365973, "zRelativ": 97.2069814590229, "zeit": 40.22006277064457 }
{ "xRelativ": 11499.362911009477, "yRelativ": 261.1076959097998, "zRelativ": 97.20832226297901, "zeit": 40.72006277064457 }
{ "xRelativ": 11499.42583300566, "yRelativ": 254.49226735111273, "zRelativ": 97.20898592381488, "zeit": 41.22006277064457 }
{ "xRelativ": 11499.465060791077, "yRelativ": 248.00000032681314, "zRelativ": 97.20918057242068, "zeit": 41.710891614207426 }
#endif // NEVER
/*
Approach Malte Diets, 2026-05-19
template <typename T> std::vector<std::vector<T>> getIndividualPaths(const std::vector<T> &flatTree)
{
if (flatTree.empty())
return {};
std::vector<std::vector<T>> allPaths;
std::vector<T> currentPath;
std::map<T, size_t> elementIndices;
for (const auto &element : flatTree)
{
auto it = elementIndices.find(element);
if (it != elementIndices.end())
{
allPaths.push_back(currentPath);
size_t splitIndex = it->second;
for (size_t i = splitIndex + 1; i < currentPath.size(); ++i)
elementIndices.erase(currentPath[i]);
currentPath.erase(currentPath.begin() + (splitIndex + 1), currentPath.end());
}
else
{
elementIndices[element] = currentPath.size();
currentPath.push_back(element);
}
}
if (!currentPath.empty())
allPaths.push_back(std::move(currentPath));
return allPaths;
}
*/
} // namespace AreaEffectSimulation