Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % invar-blocks.tex
- % Generate Invariant Matrix Block Diagrams for GNCS Paper
- %
- % Base document requires:
- %
- % \usepackage{pgf,tikz}
- % \usepackage{mathrsfs}
- % \usetikzlibrary{arrows}
- % \usetikzlibrary[patterns]
- % \usetikzlibrary{decorations.pathreplacing}
- % [import LURC]
- % One-time-only definitions, etc.
- \OneTimeOnly{
- \definecolor{aqaqaq}{rgb}{0.6274509803921569,0.6274509803921569,0.6274509803921569}
- \definecolor{wrwrwr}{rgb}{0.3803921568627451,0.3803921568627451,0.3803921568627451}
- \definecolor{cqcqcq}{rgb}{0.7529411764705882,0.7529411764705882,0.7529411764705882}
- \newcommand{\XZ}{0.02}
- \newcommand{\XOne}{0.3}
- \newcommand{\XTwo}{0.7}
- \newcommand{\XEnd}{1}
- \newcommand{\XP}{0.5}
- \newcommand{\XPOut}{0.85}
- \newcommand{\XPOff}{0.01}
- \newcommand{\XpF}{\XZ/2+\XOne/2}
- \newcommand{\XOpF}{\XOne/2+\XTwo/2}
- \newcommand{\XTpF}{\XTwo/2+\XEnd/2}
- }
- % Common environment and style definitions <---
- \begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=5cm,y=5cm]
- \tikzstyle{matrixborder}=[line width=1.6pt]
- \tikzstyle{zeroed}=[line width=1.2pt,color=aqaqaq,fill=aqaqaq,pattern=north east lines,pattern color=aqaqaq]
- \tikzstyle{ncdivider}=[line width=1.6pt,color=wrwrwr]
- \tikzstyle{csdivider}=[line width=0.8pt,dash pattern=on 2pt off 2pt]
- \tikzstyle{ssbrace}=[decorate,decoration={brace,amplitude=8pt,mirror},xshift=4pt]
- \tikzstyle{ssbracesm}=[decorate,decoration={brace,amplitude=4pt,mirror},xshift=4pt]
- \tikzstyle{ssbracemath}=[black,midway,anchor=west,xshift=8pt]
- \tikzstyle{Pdivider}=[blue,line width=1.2pt,dash pattern=on 4pt off 2pt]
- \tikzstyle{blockoverlay}=[black,fill=white,opacity=0.9,line width=0.8pt,dash pattern=on 2pt off 2pt]
- % --->
- % Generate the 'A' block, which considers P = \Pi_v, and may not be fully reachable.
- \OnlyFor{block-A}{
- \fill[zeroed] (\XTwo,\XEnd) -- (\XEnd,\XEnd) -- (\XEnd,\XTwo) -- (\XTwo,\XTwo) -- cycle;
- \fill[zeroed] (\XZ,\XZ) -- (\XZ,\XOne) -- (\XOne,\XOne) -- (\XOne,\XZ) -- cycle;
- \draw [matrixborder] (\XZ,\XZ)-- (\XZ,\XEnd);
- \draw [matrixborder] (\XZ,\XEnd)-- (\XEnd,\XEnd);
- \draw [matrixborder] (\XEnd,\XEnd)-- (\XEnd,\XZ);
- \draw [matrixborder] (\XEnd,\XZ)-- (\XZ,\XZ);
- \draw [ncdivider] (\XTwo,\XZ)-- (\XTwo,\XEnd);
- \draw [ncdivider] (\XZ,\XOne)-- (\XEnd,\XOne);
- \draw [csdivider] (\XZ,\XTwo)-- (\XEnd,\XTwo);
- \draw [csdivider] (\XOne,\XZ)-- (\XOne,\XEnd);
- \draw (\XpF,\XTpF) node[anchor=center] {$G_{11}$};
- \draw (\XOpF,\XTpF) node[anchor=center] {$G_{12}$};
- \draw (\XpF,\XOpF) node[anchor=center] {$-G^{\dagger}_{12}$};
- \draw (\XOpF,\XOpF) node[anchor=center] {$G_{22}$};
- \draw (\XTpF,\XOpF) node[anchor=center] {$G_{23}$};
- \draw (\XOpF,\XpF) node[anchor=center] {$-G^{\dagger}_{23}$};
- \draw [ssbrace] (\XEnd,\XTwo) -- (\XEnd,\XEnd) node [ssbracemath] {$\Pi_{\mathbf C}$};
- \draw [ssbrace] (\XEnd,\XOne) -- (\XEnd,\XTwo) node [ssbracemath] {$\Pi_v \ominus \Pi_{\mathbf C}$};
- \draw [ssbrace] (\XEnd,\XZ) -- (\XEnd,\XOne) node [ssbracemath] {$\Pi_v^{\perp}$};
- }
- % Generate the 'B' block, which considers an arbitrary P intersecting both \Pi_v and \Pi_v_^\perp, and may not be fully reachable.
- \OnlyFor{block-B}{
- \fill [zeroed] (\XP,\XEnd) -- (\XEnd,\XEnd) -- (\XEnd,\XTwo) -- (\XP,\XTwo) -- cycle;
- \fill [zeroed] (\XZ,\XZ) -- (\XZ,\XP) -- (\XOne,\XP) -- (\XOne,\XZ) -- cycle;
- \draw [Pdivider] (\XZ+\XPOff,\XP) -- (\XZ+\XPOff,\XEnd-\XPOff) -- (\XP,\XEnd-\XPOff) -- (\XP,\XP) -- cycle;
- \draw [Pdivider] (\XZ+\XPOff,1-\XPOut) -- (\XZ+\XPOff,\XOne-\XPOff) -- (\XTwo+\XPOff,\XOne-\XPOff) -- (\XTwo+\XPOff,\XEnd-\XPOff) -- (\XPOut,\XEnd-\XPOff) -- (\XPOut,1-\XPOut) -- cycle;
- \filldraw [blockoverlay] (\XP,\XP) -- (\XP,\XTwo) -- (\XEnd,\XTwo) -- (\XEnd,\XP) -- cycle;
- \filldraw [blockoverlay] (\XOne,\XZ) -- (\XOne,\XP) -- (\XP,\XP) -- (\XP,\XZ) -- cycle;
- \draw [matrixborder] (\XZ,\XZ)-- (\XZ,\XEnd);
- \draw [matrixborder] (\XZ,\XEnd)-- (\XEnd,\XEnd);
- \draw [matrixborder] (\XEnd,\XEnd)-- (\XEnd,\XZ);
- \draw [matrixborder] (\XEnd,\XZ)-- (\XZ,\XZ);
- \draw [ncdivider] (\XTwo,\XZ)-- (\XTwo,\XP);
- \draw [ncdivider] (\XTwo,\XTwo)-- (\XTwo,\XEnd);
- \draw [ncdivider] (\XZ,\XOne)-- (\XOne,\XOne);
- \draw [ncdivider] (\XP,\XOne)-- (\XEnd,\XOne);
- \draw [csdivider] (\XZ,\XTwo)-- (\XEnd,\XTwo);
- \draw [csdivider] (\XOne,\XZ)-- (\XOne,\XEnd);
- \draw [ssbracesm] (\XEnd,\XTwo) -- (\XEnd,\XEnd) node [ssbracemath] {$\Pi_{\mathbf C}$};
- \draw [ssbracesm] (\XEnd,\XP) -- (\XEnd,\XTwo) node [ssbracemath] {$P\cap \Pi_v \ominus \Pi_{\mathbf C}$};
- \draw [ssbracesm] (\XEnd,\XOne) -- (\XEnd,\XP) node [ssbracemath] {$P^{\perp}\cap \Pi_v$};
- \draw [ssbracesm] (\XEnd,1-\XPOut) -- (\XEnd,\XOne) node [ssbracemath] {$P \cap \Pi_v^{\perp}$};
- \draw [ssbracesm] (\XEnd,\XZ) -- (\XEnd,1-\XPOut) node [ssbracemath] {$P^{\perp} \cap \Pi_v^{\perp}$};
- \draw (\XpF,\XTpF) node[anchor=center] {$G_{11}$};
- \draw (\XOne/2+\XP/2,\XTpF) node[anchor=center] {$G_{12}$};
- \draw (\XpF,\XTwo/2+\XP/2) node[anchor=center] {$-G_{12}^\dagger$};
- \draw (\XOne/2+\XP/2,\XTwo/2+\XP/2) node[anchor=center] {$G_{22}$};
- \draw (\XP/2+\XEnd/2,\XTwo/2+\XP/2) node[anchor=center] {$G_{23}$};
- \draw (\XOne/2+\XP/2,\XZ/2+\XP/2) node[anchor=center] {$-G_{23}^\dagger$};
- }
- % Generate the 'C' block, which considers a canonical P, which intersects only \Pi_v and is fully reachable.
- \OnlyFor{block-C}{
- \fill [zeroed] (\XP,\XEnd) -- (\XEnd,\XEnd) -- (\XEnd,\XP) -- (\XP,\XP) -- cycle;
- \fill [zeroed] (\XZ,\XZ) -- (\XZ,\XP) -- (\XP,\XP) -- (\XP,\XZ) -- cycle;
- \draw [Pdivider] (\XZ+\XPOff,\XP) -- (\XZ+\XPOff,\XEnd-\XPOff) -- (\XP,\XEnd-\XPOff) -- (\XP,\XP) -- cycle;
- \draw [Pdivider] (\XP,\XZ+\XPOff) -- (\XP,\XP) -- (\XEnd-\XPOff,\XP) -- (\XEnd-\XPOff,\XZ+\XPOff) -- cycle;
- \draw [matrixborder] (\XZ,\XZ)-- (\XZ,\XEnd);
- \draw [matrixborder] (\XZ,\XEnd)-- (\XEnd,\XEnd);
- \draw [matrixborder] (\XEnd,\XEnd)-- (\XEnd,\XZ);
- \draw [matrixborder] (\XEnd,\XZ)-- (\XZ,\XZ);
- \draw [ncdivider] (\XTwo,\XZ)-- (\XTwo,\XEnd);
- \draw [ncdivider] (\XZ,\XOne)-- (\XEnd,\XOne);
- \draw [csdivider] (\XZ,\XTwo)-- (\XEnd,\XTwo);
- \draw [csdivider] (\XOne,\XZ)-- (\XOne,\XEnd);
- \draw [ssbrace] (\XEnd,\XP) -- (\XEnd,\XEnd) node [ssbracemath] {$P$};
- \draw [ssbrace] (\XEnd,\XZ) -- (\XEnd,\XP) node [ssbracemath] {$P^{\perp}$};
- }
- % Common footer <---
- \end{tikzpicture}
- % --->
Add Comment
Please, Sign In to add comment