Caminho com gradiente de opacidade em tikz
Inspirado por esta pergunta , gostaria de desenhar um símbolo do infinito cuja opacidade muda ao longo do caminho, o que consegui até agora é o seguinte:
\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.markings}
\pagecolor{yellow}
\definecolor{col1}{RGB}{127,127,127}
\definecolor{col2}{RGB}{240,240,240}
\begin{document}
\begin{tikzpicture}
\path[postaction={
decorate,
decoration={
markings,
mark=between positions 0 and \pgfdecoratedpathlength step 0.5pt with {
\pgfmathsetmacro\myval{multiply(divide(
\pgfkeysvalueof{/pgf/decoration/mark info/distance from start}, \pgfdecoratedpathlength),100)};
\pgfsetfillcolor{col1!\myval!col2};
\pgfpathcircle{\pgfpointorigin}{0.1cm};
\pgfusepath{fill};}
}}] plot[smooth cycle] coordinates{(0,0.7)(-0.2,0.35)(0,0)(1,0.7)(1.2,0.35)(1,0)};
\end{tikzpicture}
\end{document}
No entanto, existem dois problemas com isso:
(1) Este é afogado com gradiente de cor , não gradiente de opacidade , por exemplo, se eu usar esta imagem em um papel com fundo amarelo, ainda é cinza e branco, não cinza e amarelo.
(2) A borda do caminho, como você pode ver, não é lisa, parece que a borda é algum tipo de onda. (Eu acho que é porque o gradiente de cor é obtido desenhando muitos círculos e então a linha não parece muito reta. No entanto, eu não sei como consertar isso, exceto reduzir o step 0.5pt, mas se eu fizer isso o processo de desenho seria muito lento.)
Existe alguma maneira mais fácil de desenhar esta imagem corretamente?
Respostas
Desenho o símbolo com dois desbotamentos e experimento alinhá-los do lado direito.
Esta solução obviamente não é a ideal. O desbotamento não ocorre ao longo do caminho, mas de oeste para leste. Há uma diferença de cor e artefato de renderização onde as linhas se encontram no lado direito. Há um problema onde as linhas se cruzam - se fosse apenas transparência, poderia ter sido resolvido com a transparency group.
\documentclass[tikz]{standalone}
\usetikzlibrary {fadings, patterns}
\begin{document}
\begin{tikzpicture}
\pattern[pattern=checkerboard,pattern color=yellow](-1,-0.5) rectangle (1,0.5);
\begin{scope}
\clip(-1,-0.5)--(0,-0.5)--(0.5,0)--(1,0)--(1,0.5)--(0,0.5)--(-0.5,0)--(-1,0)--cycle;
\draw[darkgray, line width=5.5, path fading=west, fading transform={xscale=2, xshift=10}, line cap=round] plot[smooth] coordinates{(-0.7,0.02)(-0.5,-0.35)(0.5,0.35)(0.7,-0.02)};
\end{scope}
\begin{scope}
\clip (-1,-0.5)--(1,-0.5)--(1,0)--(0.5,0)--(0,0.5)--(-1,0.5)--cycle;
\draw[darkgray, line width=5.5, path fading=east, fading transform={xscale=2, xshift=10}, line cap=round] plot[smooth] coordinates{(-0.7,0)(-0.5,0.35)(0.5,-0.35)(0.7,0.02)};
\end{scope}
\end{tikzpicture}
\end{document}
Editar:
Isso é apenas para demonstrar que é possível cortar um caminho completamente fora do outro
\documentclass[tikz]{standalone}
\usetikzlibrary{fadings, patterns}
\begin{tikzfadingfrompicture}[name=myfading]
\clip(-1,-0.5)--(0,-0.5)--(0.5,0)--(1,0)--(1,0.5)--(0,0.5)--(-0.5,0)--(-1,0)--cycle;
\draw[white, line width=5.5, path fading=west, fading transform={xscale=2, xshift=10}, line cap=round] plot[smooth] coordinates{(-0.7,0.02)(-0.5,-0.35)(0.5,0.35)(0.7,-0.02)};
\draw[line width=5.5, line cap=round] plot[smooth] coordinates{(-0.7,0)(-0.5,0.35)(0.5,-0.35)(0.7,0.02)};
\end{tikzfadingfrompicture}
\begin{document}
\begin{tikzpicture}
\pattern[pattern=checkerboard,pattern color=yellow](-1,-0.5) rectangle (1,0.6);
\fill[path fading=myfading, left color = white, right color = gray] (-1,-1) rectangle (1,1);
\end{tikzpicture}
\end{document}
Isso poderia resolver o problema de sobreposição, mas sempre que tento usar tikzfadingfrompicture, recebo problemas de escala estranhos devido à minha falta de compreensão. -Vejohttps://tex.stackexchange.com/a/551723/8650