给丝带的两面涂上颜色?

给丝带的两面涂上颜色?

我没有想到我的图表中会出现以下交叉点(这里,为了简单起见,只显示了局部)。现在,我需要知道如何为我(局部)绘制的丝带两侧着色,如下所示:

在此处输入图片描述

如何将填充限制在所需区域的曲线上?

\documentclass{standalone}

\usepackage{tikz}


\begin{document}
 \begin{tikzpicture}

\fill[double,blue, opacity=.39,
double distance=1.0 pt,thick,smooth] plot[smooth ] coordinates{
    (12.68,-.96)  (12.68-.085,-.96-.063) (12.68+.25, -.96+0.001)  (12.68+.282, -.96+.1)  
    (12.68,-.96) } ;

\draw[ opacity=.4]
(12.68,-.96) ..controls +( .4,.083) and +( .1,-.0811 ) ..  (12.88,-.75)  ;

\draw[ opacity=.4]
(12.61,-1.01) ..controls +( .46,.05) and +( .135,-.0811 ) ..  (12.839,-.81)  ;

 % second, non-smooth attempt
\begin{scope}[xshift=.5cm] 
 \fill[double, red!60!black, opacity=.39,
  double distance=1.0 pt]
    (12.68,-.96) --  +(-.085, -.063) -- +(.255, 0.001)  -- +(.289, .1) --  (12.68,-.96)  ; 


\draw[ opacity=.4]
(12.68,-.96) ..controls +( .4,.083) and +( .1,-.0811 ) ..  (12.88,-.75)  ;

\draw[ opacity=.4]
(12.61,-1.01) ..controls +( .46,.05) and +( .135,-.0811 ) ..  (12.839,-.81)  ;   
 \end{scope}


\end{tikzpicture}
\end{document}

答案1

这不是一个完整的答案,但希望能够让你朝着正确的方向前进。如果我理解正确的话,这个问题很难,因为你本质上是在试图找到弯曲曲线的“最大”点,以便你可以填充到该点的空间。最简单的解决方案是使用\fill相同的路径坐标,反转其中一条路径:

\begin{tikzpicture}

\draw[ opacity=.4]
(12.68,-.96) ..controls +( .4,.083) and +( .1,-.0811 ) ..  (12.88,-.75)  ;

\draw[ opacity=.4]
(12.61,-1.01) ..controls +( .46,.05) and +( .135,-.0811 ) ..  (12.839,-.81)  ;

\fill[ opacity=.4,color=blue]
(12.61,-1.01) ..controls +( .46,.05) and +( .135,-.0811 ) ..  (12.839,-.81)  
--
(12.88,-.75) .. controls +( .1,-.0811 ) and +( .4,.083) .. (12.68,-.96);

\end{tikzpicture}

您会看到“丝带”的一部分已被填充,但两条曲线“折返”并改变方向的区域周围尚未被填充:

在此处输入图片描述

我最初的想法是使用tikz-3dplot因为您要复制的功能区以某种方式存在于三维空间中,因此使用该包您可以找到它的合适投影 - 但实际上在三维空间中绘制它似乎也很困难。

答案2

根据jlv给出的解决方案,

在此处输入图片描述

 \begin{scope}
        \clip (12.61,-1.01) rectangle (12.97,-.888)  ;
    \fill[ opacity=.4,color=blue]
    (12.61,-1.01) ..controls +( .46,.05) and +( .135,-.0811 ) ..  (12.839,-.81)  
    --
    (12.88,-.75) .. controls +( .1,-.0811 ) and +( .4,.083) .. (12.68,-.96);
    \end{scope} 


\begin{scope}
    \clip  (12.57,-.877) rectangle (13,-.477)  ;
\fill[ opacity=.4,color=red]
(12.61,-1.01) ..controls +( .46,.05) and +( .135,-.0811 ) ..  (12.839,-.81)  
--
(12.88,-.75) .. controls +( .1,-.0811 ) and +( .4,.083) .. (12.68,-.96);
\end{scope} 

相关内容