Fri, 06 Dec 2024 11:38:12 -0500
assert tolerance
| 37 | 1 | \documentclass[tikz]{standalone} |
| 2 | ||
| 3 | \input{plotsetup} | |
| 4 | ||
| 5 | \def\datapath{../res/cylinder} | |
| 6 | ||
| 7 | \begin{document} | |
| 8 | ||
| 9 | \begin{tikzpicture} | |
| 10 | \pgfplotsset{ | |
| 11 | onlyfront/.code = \pgfplotsset{x filter/.expression={% | |
| 12 | \thisrow{face} == 0 || (% | |
| 13 | and(\thisrow{face}==2, or(2*pi+\a <= \thisrow{angle}, \thisrow{angle} <= \b)) | |
| 14 | ) ? x : nan% | |
| 15 | },}, | |
| 16 | onlyback/.code = \pgfplotsset{x filter/.expression={% | |
| 17 | \thisrow{face} == 1 || (% | |
| 18 | and(\thisrow{face}==2, or(2*pi+\a > \thisrow{angle}, \thisrow{angle} > \b)) | |
| 19 | ) ? x : nan% | |
| 20 | },}, | |
| 21 | } | |
| 22 | ||
| 23 | \pgfmathsetmacro{\a}{-pi*5/6} | |
| 24 | \pgfmathsetmacro{\b}{pi/6} | |
| 25 | ||
| 26 | \begin{axis}[illustr3d] | |
| 27 | % Hidden edges | |
| 28 | \addplot3[edge, domain=\b:(2*pi+\a), samples = 90, samples y = 0] ({cos(deg(x))}, {sin(deg(x))}, {-0.5}); | |
| 29 | ||
| 30 | % Data on hidden faces | |
| 31 | \addplot3[backdata] table[ | |
| 32 | x expr = \thisrow{r} * cos(deg(\thisrow{angle})), | |
| 33 | y expr = \thisrow{r} * sin(deg(\thisrow{angle})), | |
| 34 | z = z, | |
| 35 | ] {\datapath/data.csv}; | |
| 36 | ||
| 37 | % Iterates on hidden faces | |
| 38 | \addplot3[backiter1,onlyback] table[ | |
| 39 | x expr = \thisrow{r} * cos(deg(\thisrow{angle})), | |
| 40 | y expr = \thisrow{r} * sin(deg(\thisrow{angle})), | |
| 41 | z = z, | |
| 42 | ] {\datapath/x1_log.csv}; | |
| 43 | \addplot3[backiter2,onlyback] table[ | |
| 44 | x expr = \thisrow{r} * cos(deg(\thisrow{angle})), | |
| 45 | y expr = \thisrow{r} * sin(deg(\thisrow{angle})), | |
| 46 | z = z, | |
| 47 | ] {\datapath/x2_log.csv}; | |
| 48 | \addplot3[backiter3,onlyback] table[ | |
| 49 | x expr = \thisrow{r} * cos(deg(\thisrow{angle})), | |
| 50 | y expr = \thisrow{r} * sin(deg(\thisrow{angle})), | |
| 51 | z = z, | |
| 52 | ] {\datapath/x3_log.csv}; | |
| 53 | ||
| 54 | % Surface | |
| 55 | \addplot3[ | |
| 56 | surf, | |
| 57 | mesh/ordering=x varies, % the second input coordinate stays fixed while first varies | |
| 58 | mesh/cols=16, % number of first input coordinate points untils second changes | |
| 59 | surfstyle, | |
| 60 | %x filter/.expression = {or(2*pi+\a <= \thisrow{angle}, \thisrow{angle} <= \b)}, | |
| 61 | ] table [ | |
| 62 | x expr = cos(deg(\thisrow{angle})), | |
| 63 | y expr = sin(deg(\thisrow{angle})), | |
| 64 | z = v, | |
| 65 | point meta = \thisrow{value}, | |
| 66 | ] {\datapath/side_front.csv}; | |
| 67 | \addplot3[ | |
| 68 | surf, | |
| 69 | mesh/ordering=x varies, % the second input coordinate stays fixed while first varies | |
| 70 | mesh/cols=32, % number of first input coordinate points untils second changes | |
| 71 | surfstyle, | |
| 72 | ] table [ | |
| 73 | x expr = \thisrow{v} * cos(deg(\thisrow{angle})), | |
| 74 | y expr = \thisrow{v} * sin(deg(\thisrow{angle})), | |
| 75 | z expr = 0.5, | |
| 76 | point meta = \thisrow{value}, | |
| 77 | ] {\datapath/top.csv}; | |
| 78 | ||
| 79 | % Edges | |
| 80 | \addplot3[edge, domain={0:2*pi}, samples = 60, samples y = 0] ({cos(deg(x))}, {sin(deg(x))}, {0.5}); | |
| 81 | \addplot3[edge, domain={\a:\b}, samples = 60, samples y = 0] ({cos(deg(x))}, {sin(deg(x))}, {-0.5}); | |
| 82 | \addplot3[edge] coordinates { (cos(deg(\a)), sin(deg(\a)), -0.5) (cos(deg(\a)), sin(deg(\a)), 0.5) }; | |
| 83 | \addplot3[edge] coordinates { (cos(deg(\b)), sin(deg(\b)), -0.5) (cos(deg(\b)), sin(deg(\b)), 0.5) }; | |
| 84 | ||
| 85 | % Data | |
| 86 | \addplot3[data, onlyfront] table[ | |
| 87 | x expr = \thisrow{r} * cos(deg(\thisrow{angle})), | |
| 88 | y expr = \thisrow{r} * sin(deg(\thisrow{angle})), | |
| 89 | z = z, | |
| 90 | ] {\datapath/data.csv}; | |
| 91 | \addlegendentry{Data} | |
| 92 | ||
| 93 | \addplot3[origin, onlyfront] table[ | |
| 94 | x expr = \thisrow{r} * cos(deg(\thisrow{angle})), | |
| 95 | y expr = \thisrow{r} * sin(deg(\thisrow{angle})), | |
| 96 | z = z, | |
| 97 | ] {\datapath/origin.csv}; | |
| 98 | \addlegendentry{Origin} | |
| 99 | ||
| 100 | % Iterates | |
| 101 | \addplot3[iter1,onlyfront] table[ | |
| 102 | x expr = \thisrow{r} * cos(deg(\thisrow{angle})), | |
| 103 | y expr = \thisrow{r} * sin(deg(\thisrow{angle})), | |
| 104 | z = z, | |
| 105 | ] {\datapath/x1_log.csv}; | |
| 106 | \addlegendentry{Iterates 1} | |
| 107 | \addplot3[iter2,onlyfront] table[ | |
| 108 | x expr = \thisrow{r} * cos(deg(\thisrow{angle})), | |
| 109 | y expr = \thisrow{r} * sin(deg(\thisrow{angle})), | |
| 110 | z = z, | |
| 111 | ] {\datapath/x2_log.csv}; | |
| 112 | \addlegendentry{Iterates 2} | |
| 113 | \addplot3[iter3,onlyfront] table[ | |
| 114 | x expr = \thisrow{r} * cos(deg(\thisrow{angle})), | |
| 115 | y expr = \thisrow{r} * sin(deg(\thisrow{angle})), | |
| 116 | z = z, | |
| 117 | ] {\datapath/x3_log.csv}; | |
| 118 | \addlegendentry{Iterates 3} | |
| 119 | \end{axis} | |
| 120 | \end{tikzpicture} | |
| 121 | ||
| 122 | \end{document} |