简短问题:
简短的问题可以表述如下:有没有办法完美对齐完全覆盖连续区域的填充(但可能未绘制)形状?
考虑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}
其结果为:
如果仔细观察,中心红色多边形上方有小的双线。如果将样式更改draw=Back!#1
为,则会看到小间隙而不是双线。draw=none
mmaB
这个问题之所以难回答,是因为多边形的顺序很重要。我无法简单地将 mmaB 样式多边形分组到 中scope
。opacity=.5,transparency group
原因在下面的背景故事中解释。
背景故事
使用 Mathematica 计算多边形,我可以绘制如下图形:
好奇的人可能会发现,这只是 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}