8

I am not sure how to proceed in filling the interior of a randomly generated (via a random decoration) path.

I began with code given in the answer to this question and worked on it since the basic purpose was related.

imageyes

The fill and the drawn line are not quite the same, because there is a random decoration applied to each.

QUESTION)

How do I apply the fill to the interior bounded by the drawn line?

(Also, by the way, in this case, how do I make the decoration arrows larger? Can I apply decoration arrows also the drawn path without breaking the other decoration?)

\documentclass[border=0pt]{standalone}\usepackage{mathtools,tikz,tkz-euclide}\usetikzlibrary{decorations.markings,arrows,decorations.pathmorphing}\usetkzobj{all}\begin{document}\begin{tikzpicture}[label]\tkzInit[xmin=-0.8,xmax=10,ymin=-0.4,ymax=8.4] \tkzClip
\tikzset{every node}=[font=\normalsize]

%here_we_make_such_a_dashing
\tikzstyle{finelydashed}=[dash pattern=on 4pt off 7pt]
\tikzstyle{coarselydashed}=[dash pattern=on 7pt off 8pt]

%here_we_make_such_a_shading
\pgfdeclarepatternformonly{ltrdiagonals}%
{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{10pt}{10pt}}%
{\pgfqpoint{9pt}{9pt}}{\pgfsetlinewidth{0.4pt}\pgfpathmoveto{\pgfqpoint{0pt}{0pt}}%
\pgfpathlineto{\pgfqpoint{9.1pt}{9.1pt}}%
\pgfusepath{stroke}}%

%here_we_make_such_a_grid
\draw[help lines,color=black!90](0,0)grid(8,8);

%here_we_define_our_several_points
\tkzDefPoint(1,2){v}\tkzDefPoint(7,2){w}  
\tkzDefPointBy[rotation=center w angle -42](v)
\tkzGetPoint{C}
\tkzDefPointBy[rotation=center v angle 63](w)
\tkzGetPoint{D}
\tkzInterLL(v,D)(C,w)\tkzGetPoint{x}


\tkzDefMidPoint(v,x)\tkzGetPoint{M}

\draw[shade,top color=black!96,bottom color=black!16,fill opacity=0.64,decoration=   {random steps,segment length=22pt,amplitude=11pt},decorate,line width=2pt,rounded corners=8pt](v)--(1.7,3.2)--(4,4)--(6,3)--(w)--(7.4,1)--(0.4,0.4)--(v);
\fill[even odd rule,pattern=ltrdiagonals,pattern color=black!84,decoration={random steps,segment length=24pt,amplitude=0.24cm},decorate,line width=2pt,rounded corners=8pt](v)--(1.7,3.2)--(4,4)--(6,3)--(w)--(7.4,1)--(0.4,0.4)--(v);

%here_we_label_each_node_so
\tkzLabelPoint[above left](v){\LARGE $\boldsymbol{\mathbf{H}_{\;n\;v}}\,$}
\tkzLabelPoint[above left](x){\LARGE $\mathbf{x_{\;n}}$}  
\tkzLabelPoint[right](w){\LARGE $\;\boldsymbol{\mathbf{H}_{\;n\;w}}$}
\tkzLabelAngle[pos=0.64](v,x,w){\large $\boldsymbol{\varphi}$}
\tkzLabelAngle[pos=0.64](w,v,x){\large $\boldsymbol{\rho}$}
\tkzLabelPoint[left](M){$\boldsymbol{2\cdot\mu}\;$}

%here_we_construct_each_line_so
\begin{scope}[decoration={markings,mark=at position 0.5 with {\LARGE\arrow{triangle 45},color=black!96}}]
\draw[-,decorate](v)--(x);
\draw[-,decorate](v)--(w);
\draw[-,decorate](x)--(w);
\end{scope}
\draw[-,line width=1.2pt,coarselydashed,color=black!96](v)--(x);
\draw[-,line width=1.2pt,coarselydashed,color=black!96](v)--(w);
\draw[-,line width=1.2pt,coarselydashed,color=black!96](x)--(w);
\tkzDrawPoints[color=black,shape=circle,fill=black!64,size=16pt](v,x,w)
\tkzMarkAngle[scale=1,line width=1.2pt,finelydashed,color=black!96](v,x,w)
\tkzMarkAngle[scale=1,line width=1.2pt,finelydashed,color=black!96](w,v,x)
\end{tikzpicture}\end{document}

enter image description here

  • 1
    Just asking, but couldn't you just insert pattern=ltrdiagonals as a \draw option and remove the \fill? – Nico Vecchio Sep 27 '14 at 8:04
  • You're right, this works as well! – Guido Jorg Sep 27 '14 at 8:23
9

You need to reuse the same path with postaction,preaction keys.

\documentclass[border=0pt]{standalone}
\usepackage{mathtools,tikz,tkz-euclide}\usetikzlibrary{decorations.markings,arrows,decorations.pathmorphing}
\usetkzobj{all}
\begin{document}
\begin{tikzpicture}[label]
\tkzInit[xmin=-0.8,xmax=10,ymin=-0.4,ymax=8.4] 
\tkzClip
\tikzset{every node}=[font=\normalsize]
%here_we_make_such_a_dashing
\tikzstyle{finelydashed}=[dash pattern=on 4pt off 7pt]
\tikzstyle{coarselydashed}=[dash pattern=on 7pt off 8pt]

%here_we_make_such_a_shading
\pgfdeclarepatternformonly{ltrdiagonals}%
{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{10pt}{10pt}}%
{\pgfqpoint{9pt}{9pt}}{\pgfsetlinewidth{0.4pt}\pgfpathmoveto{\pgfqpoint{0pt}{0pt}}%
\pgfpathlineto{\pgfqpoint{9.1pt}{9.1pt}}%
\pgfusepath{stroke}}%

%here_we_make_such_a_grid
\draw[help lines,color=black!90](0,0)grid(8,8);

%here_we_define_our_several_points
\tkzDefPoint(1,2){v}\tkzDefPoint(7,2){w}  
\tkzDefPointBy[rotation=center w angle -42](v)
\tkzGetPoint{C}
\tkzDefPointBy[rotation=center v angle 63](w)
\tkzGetPoint{D}
\tkzInterLL(v,D)(C,w)\tkzGetPoint{x}


\tkzDefMidPoint(v,x)\tkzGetPoint{M}

\draw[%shade,
     top color=black!96,
     bottom color=black!16,
     fill opacity=0.64,
     decoration={random steps,segment length=22pt,amplitude=11pt},
     decorate,
     line width=2pt,
     rounded corners=8pt,
     postaction={fill,pattern=ltrdiagonals,pattern color=black!84}
     ](v)--(1.7,3.2)--(4,4)--(6,3)--(w)--(7.4,1)--(0.4,0.4)--(v);


%here_we_label_each_node_so
\tkzLabelPoint[above left](v){\LARGE $\boldsymbol{\mathbf{H}_{\;n\;v}}\,$}
\tkzLabelPoint[above left](x){\LARGE $\mathbf{x_{\;n}}$}  
\tkzLabelPoint[right](w){\LARGE $\;\boldsymbol{\mathbf{H}_{\;n\;w}}$}
\tkzLabelAngle[pos=0.64](v,x,w){\large $\boldsymbol{\varphi}$}
\tkzLabelAngle[pos=0.64](w,v,x){\large $\boldsymbol{\rho}$}
\tkzLabelPoint[left](M){$\boldsymbol{2\cdot\mu}\;$}

%here_we_construct_each_line_so
\begin{scope}[decoration={markings,mark=at position 0.5 with {\LARGE\arrow{triangle 45},color=black!96}}]
\draw[-,decorate](v)--(x);
\draw[-,decorate](v)--(w);
\draw[-,decorate](x)--(w);
\end{scope}
\draw[-,line width=1.2pt,coarselydashed,color=black!96](v)--(x);
\draw[-,line width=1.2pt,coarselydashed,color=black!96](v)--(w);
\draw[-,line width=1.2pt,coarselydashed,color=black!96](x)--(w);
\tkzDrawPoints[color=black,shape=circle,fill=black!64,size=16pt](v,x,w)
\tkzMarkAngle[scale=1,line width=1.2pt,finelydashed,color=black!96](v,x,w)
\tkzMarkAngle[scale=1,line width=1.2pt,finelydashed,color=black!96](w,v,x)
\end{tikzpicture}
\end{document}

enter image description here

As you can see random steps don't play well with the rounded corners option. Also have a look at Should \tikzset or \tikzstyle be used to define TikZ styles?

  • You're right about the tikzset versus style. I forgot about that (I had that question bookmarked already). BTW, dcmst suggested putting the pattern in the draw options directly, which also works. Is there a reason to use postaction to bracket the pattern? – Guido Jorg Sep 27 '14 at 8:25
  • 1
    @GuidoJorg dcmst is right but I was not assuming this is the only example. You can do other fill,shade,draw combos that cannot be done at one pass. So take it as an overkill :) – percusse Sep 27 '14 at 8:36
  • I've already found it useful for stacking decorations properly. Postaction is very useful. +1 – Guido Jorg Sep 27 '14 at 8:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.