迁移到dhxdl
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
% Geometric intuition of the convex decomposition (supplement S-IV).
|
||||
% All coordinates are computed by calc_convex.py from
|
||||
% eq:sup_ellipsoid_quadratic and eq:sup_halfspace_normal
|
||||
% and pasted here verbatim; do not hand-edit the numbers.
|
||||
\documentclass[tikz,border=1pt]{standalone}
|
||||
\input{figstyle}
|
||||
|
||||
\tikzset{
|
||||
obst/.style={circle, fill=sitec, inner sep=0pt, minimum size=1.7pt},
|
||||
obstx/.style={circle, draw=sitec, line width=0.3pt, fill=white,
|
||||
inner sep=0pt, minimum size=1.7pt},
|
||||
hsp/.style={corrc, line width=0.35pt, dash pattern=on 1.4pt off 1.0pt},
|
||||
ell/.style={parkc, line width=0.6pt},
|
||||
sph/.style={sitec, line width=0.35pt, dash pattern=on 1.0pt off 1.0pt},
|
||||
segl/.style={exitc, line width=1.0pt},
|
||||
}
|
||||
\newcommand{\allobst}{%
|
||||
\foreach \x/\y in {0.30/1.42, 3.75/1.62, 4.85/1.35, 1.90/-1.62,
|
||||
4.35/-1.45, 5.35/-1.02, -0.55/0.85}
|
||||
{\node[obst] at (\x,\y) {};}%
|
||||
\foreach \x/\y in {3.10/-1.12, 1.35/1.05, 2.55/1.28, 5.75/0.62,
|
||||
0.65/-1.30, -1.05/0.12, 6.35/-0.18}
|
||||
{\node[obst] at (\x,\y) {};}%
|
||||
}
|
||||
|
||||
\begin{document}
|
||||
\begin{tikzpicture}[scale=0.50]
|
||||
|
||||
% ============================ panel (a) ==================================
|
||||
\begin{scope}
|
||||
\begin{scope}
|
||||
\clip (-1.45,-2.80) rectangle (6.65,2.80);
|
||||
% initial sphere: radius = segment half-length, before the minor-axis shrink
|
||||
\draw[sph] (2.600,0) circle [radius=2.6000];
|
||||
% collision-free ellipsoid after shrinking along the minor axis
|
||||
\draw[ell, fill=parkc, fill opacity=0.10] (2.600,0)
|
||||
ellipse [x radius=2.6000, y radius=1.1413];
|
||||
\end{scope}
|
||||
% shrink direction along the minor axis
|
||||
\foreach \s in {1,-1}
|
||||
{\draw[line width=0.35pt, ->, >={Latex[length=1.0mm,width=0.8mm]}]
|
||||
(2.600,\s*2.45) -- (2.600,\s*1.30);}
|
||||
% the path segment, fully enclosed by the ellipsoid
|
||||
\draw[segl] (0,0) -- (5.200,0);
|
||||
\node[obst, fill=exitc] at (0,0) {};
|
||||
\node[obst, fill=exitc] at (5.200,0) {};
|
||||
\node[obst, fill=black] at (2.600,0) {};
|
||||
\allobst
|
||||
% the obstacle that stops the shrink lies exactly on the boundary
|
||||
\draw[confc, line width=0.45pt] (3.100,-1.120) circle [radius=0.19];
|
||||
\node[annt, anchor=north] at (0.00,-0.10) {$\mathbf{p}_0$};
|
||||
\node[annt, anchor=north] at (5.20,-0.10) {$\mathbf{p}_1$};
|
||||
\node[annt, anchor=south west] at (2.62,0.04) {$\mathbf{d}$};
|
||||
\node[annt, parkc, anchor=south] at (2.60,1.20) {$\mathcal{E}$};
|
||||
\node[annt, confc, anchor=north west] at (3.28,-1.22) {$\mathbf{o}_i$};
|
||||
\node[annt, sitec, anchor=south east] at (4.60,1.95) {initial sphere};
|
||||
\node[panel, anchor=north] at (2.60,-2.95) {(a)};
|
||||
\end{scope}
|
||||
% ============================ panel (b) ==================================
|
||||
\begin{scope}[shift={(9.4,0)}]
|
||||
% convex polytope P = { p | A p <= b }, 7 retained half-spaces
|
||||
\fill[corrc, fill opacity=0.13]
|
||||
(-1.201,-0.765) -- (0.732,-1.324) -- (6.182,-0.855) --
|
||||
(6.393,-0.009) -- (5.057,1.299) -- (2.346,1.278) --
|
||||
(-0.983,0.515) -- cycle;
|
||||
\draw[corrc, line width=0.6pt]
|
||||
(-1.201,-0.765) -- (0.732,-1.324) -- (6.182,-0.855) --
|
||||
(6.393,-0.009) -- (5.057,1.299) -- (2.346,1.278) --
|
||||
(-0.983,0.515) -- cycle;
|
||||
\begin{scope}
|
||||
\clip (-1.45,-2.80) rectangle (6.65,2.80);
|
||||
% supporting half-space boundaries, tangent to the ellipsoid metric
|
||||
\draw[hsp] (-8.848,-2.148) -- (9.085,-0.605); % o_7
|
||||
\draw[hsp] (8.611,2.716) -- (-8.933,-1.309); % o_1
|
||||
\draw[hsp] (8.990,1.328) -- (-9.009,1.193); % o_2
|
||||
\draw[hsp] (9.555,-3.105) -- (-3.307,9.487); % o_11
|
||||
\draw[hsp] (-8.943,1.473) -- (8.349,-3.525); % o_5
|
||||
\draw[hsp] (0.474,9.049) -- (-2.554,-8.694); % o_12
|
||||
\draw[hsp] (3.846,-10.233) -- (8.197,7.233); % o_13
|
||||
\draw[ell, dash pattern=on 1.2pt off 1.0pt] (2.600,0)
|
||||
ellipse [x radius=2.6000, y radius=1.1413];
|
||||
\end{scope}
|
||||
\draw[segl] (0,0) -- (5.200,0);
|
||||
% retained obstacles: solid; pruned as redundant: hollow
|
||||
\foreach \x/\y in {0.30/1.42, 3.75/1.62, 4.85/1.35, 1.90/-1.62,
|
||||
4.35/-1.45, 5.35/-1.02, -0.55/0.85}
|
||||
{\node[obstx] at (\x,\y) {};}
|
||||
\foreach \x/\y in {3.10/-1.12, 1.35/1.05, 2.55/1.28, 5.75/0.62,
|
||||
0.65/-1.30, -1.05/0.12, 6.35/-0.18}
|
||||
{\node[obst] at (\x,\y) {};}
|
||||
% one normal drawn from its tangency anchor to the generating obstacle
|
||||
\draw[line width=0.35pt, ->, >={Latex[length=1.0mm,width=0.8mm]}]
|
||||
(2.555,1.141) -- (2.55,1.28);
|
||||
\node[annt, anchor=west] at (2.70,1.62)
|
||||
{$\mathbf{a}_i^{\!\top}\mathbf{p}=b_i$};
|
||||
\node[annt, corrc, anchor=north east] at (6.30,-0.95) {$\mathcal{P}$};
|
||||
\node[panel, anchor=north] at (2.60,-2.95) {(b)};
|
||||
\end{scope}
|
||||
\end{tikzpicture}
|
||||
\end{document}
|
||||
Reference in New Issue
Block a user