TikZ 半透明连续形状,无间隙

TikZ 半透明连续形状,无间隙

简短问题

简短的问题可以表述如下:有没有办法完美对齐完全覆盖连续区域的填充(但可能未绘制)形状?

考虑MWE:

\documentclass[tikz,crop=true,border=1pt]{standalone}
\definecolor[named]{Back}{cmyk}{0,.3,.94,0}
\definecolor[named]{Front}{cmyk}{0,1.0,.64,.34}
\tikzset{mmaF/.style={fill=Front!#1,draw=Front!#1,
    line width=.04pt,opacity=1}}
\tikzset{mmaB/.style={line width=0.01pt,fill=Back!#1,   
    draw=Back!#1,opacity=.5}}
%
\begin{document}
\begin{tikzpicture}
    \begin{scope}[transparency group]
    \draw[mmaF=50] (0,0) rectangle ++(2,2);
    \draw[mmaB=90] (1,1) rectangle ++(2,2);
    \draw[mmaB=90] (-1,-1) rectangle ++(2,2);
    \draw[mmaB=90] (-1,1) rectangle ++(2,2);
    \draw[mmaF=88] (2,-1) rectangle ++(2,2);
    \draw[mmaB=90] (1,-1) rectangle ++(2,2);            
    \end{scope}
\end{tikzpicture}
\end{document}

其结果为:

示例 tikz 多边形

如果仔细观察,中心红色多边形上方有小的双线。如果将样式更改draw=Back!#1为,则会看到小间隙而不是双线。draw=nonemmaB

这个问题之所以难回答,是因为多边形的顺序很重要。我无法简单地将 mmaB 样式多边形分组到 中scopeopacity=.5,transparency group原因在下面的背景故事中解释。

背景故事

使用 Mathematica 计算多边形,我可以绘制如下图形:

使用 mathematica 制作的 tikz 绘图

好奇的人可能会发现,这只是 10,000 多行简单的 tikz。Mathematica 计算 3D->2D 转换,并给出一个有序的平面 tikz 形状集合,可以用任何一种样式mmaF(正面多边形)或mmaB背面多边形进行填充。

但是,我在混合不透明度时遇到了麻烦:

这次有一些半透明的部分

在哪里可以看到网格线。问题:如何去除半透明部分的网格线?

答案1

我不确定是否理解了这个问题(我的英语:))我用\path它来代替\draw

\documentclass[tikz,crop=true,border=1pt]{standalone}
\definecolor[named]{Back}{cmyk}{0,.3,.94,0}
\definecolor[named]{Front}{cmyk}{0,1.0,.64,.34}
\tikzset{mmaF/.style={fill=Front!#1,opacity=1}}
\tikzset{mmaB/.style={fill=Back!#1, opacity=.5}}
%
\begin{document}
\begin{tikzpicture}
    \begin{scope}[transparency group]
    \path[mmaF=50] (0,0) rectangle ++(2,2);
    \path[mmaB=90] (1,1) rectangle ++(2,2);
    \path[mmaB=90] (-1,-1) rectangle ++(2,2);
    \path[mmaB=90] (-1,1) rectangle ++(2,2);
    \path[mmaF=88] (2,-1) rectangle ++(2,2);
    \path[mmaB=90] (1,-1) rectangle ++(2,2);            
    \end{scope}
\end{tikzpicture}
\end{document}   

在此处输入图片描述

相关内容