First off, if anyone knows how to change the tag reachability-analysi
to reachability-analysis
, please do so! Discourse won’t let me type reachability-analysis
in the category because a previous tag with an incorrect spelling was created.
I want to convexify a closed orbit (e.g. a 6-dimensional line which closes in on itself). How can I do this? In another post, @mforets kindly offered a detailed example for convexifying a manifold. I can’t figure out how to do so with a simple “line”, though.
I can approximate the plane of the orbit, as in the image below, but I can’t figure out how to only take the edge of the orbital plane.
Some pseudo code for what I’d like to do is below. Much of this code is taken directly from @mforets’ example provided in the previously linked Discourse post.
using Plots
using LazySets
using DifferentialEquations
using ReachabilityAnalysis
using GeneralAstrodynamics
points = let
orbit, T = halo(SunEarth; Az = 0.005, L = 2)
trajectory = propagate(orbit, T; abstol=1e-16)
Matrix(solution(trajectory)')
end
@assert points[1,:] ≈ points[end,:]
convexified_points = [
Singleton(row[1:2]) for row ∈ eachrow(points)
]
dom = box_approximation(UnionSetArray(convexified_points))
part = split(dom, [2, 2], [4, 1])
idx_dom = []
for D in part
idx = findall(p -> p ⊆ D, convexified_points)
isempty(idx) && continue
push!(idx_dom, idx)
end
myset = UnionSetArray([ConvexHullArray(convexified_points[ii]) for ii in idx_dom])
plot(myset)