TikZ-decoration: control decoration amplitude along curveRandomly curved arrows in TikZCombine tikz curve with random variationTiKZ decoration doesn't workModify TikZ coil decorationHow to insert math with curly brackets into tikz decoration text along path?TikZ: node along decorationTruncate tikz snake decoration without changing frequencyPGF Decoration: how to remember a point between decoration states?Scale a decoration in TikZTikZ path decoration: text below pathTikz; decoration with rounded cornersCombine tikz curve with random variation

Typing CO_2 easily

Ways of geometrical multiplication

Given this phrasing in the lease, when should I pay my rent?

Are Captain Marvel's powers affected by Thanos breaking the Tesseract and claiming the stone?

How do I tell my boss that I'm quitting in 15 days (a colleague left this week)

What does "tick" mean in this sentence?

Review your own paper in Mathematics

Limit max CPU usage SQL SERVER with WSRM

Do you waste sorcery points if you try to apply metamagic to a spell from a scroll but fail to cast it?

Is there a way to play vibrato on the piano?

Anime with legendary swords made from talismans and a man who could change them with a shattered body

How to test the sharpness of a knife?

Showing mass murder in a kid's book

Is there a distance limit for minecart tracks?

How to reduce predictors the right way for a logistic regression model

In One Punch Man, is King actually weak?

Can I run 125kHz RF circuit on a breadboard?

How do I Interface a PS/2 Keyboard without Modern Techniques?

Make a Bowl of Alphabet Soup

"Oh no!" in Latin

Would this string work as string?

Why is the Sun approximated as a black body at ~ 5800 K?

How to preserve electronics (computers, iPads and phones) for hundreds of years

Why do Radio Buttons not fill the entire outer circle?



TikZ-decoration: control decoration amplitude along curve


Randomly curved arrows in TikZCombine tikz curve with random variationTiKZ decoration doesn't workModify TikZ coil decorationHow to insert math with curly brackets into tikz decoration text along path?TikZ: node along decorationTruncate tikz snake decoration without changing frequencyPGF Decoration: how to remember a point between decoration states?Scale a decoration in TikZTikZ path decoration: text below pathTikz; decoration with rounded cornersCombine tikz curve with random variation













11















Working with path decorations based on this solution provided by marmot I am searching for a possibility to change the decorations amplitude along the graph.



Having this plot



enter image description here



applying the mentioned decoration gives



enter image description here



which is exactly what the decoration is supposed to do.



In fact the required curve should look like this one:



enter image description here



The last output has been created by manually searching the correct positions to manipulate the amplitude which is a "trial and error" method. Changing the dimensions of the tikzpicture will then give a false result, fx



enter image description here



Now the basic idea is to provide a separate path (which can be made visible during development) to control the decorations amplitude along the original (blue) curve. In this case the control path (red) would be quite simple:



enter image description here



The control path could be interpreted as a factor to the decorations amplitude that can be set via decoration=amplitude=.



Assuming this method would be quite handy I'm a bit stunned it is not available in TikZ - or have I overseen it? And if it's not: how can I get the y-value of the control curve within the statestep portion of the decorations definition?



The MWE producing all the above graphs (even if not nicely coded in terms of efficiency and structural beauty):



documentclassarticle
usepackagetikz
usetikzlibrarycalc,decorations.pathmorphing

newcounterrandymark
newcommandamplitudesetter
pgfdeclaredecorationmark random y stepsstart
%
statestart[width=+0pt,next state=step,persistent precomputation=pgfdecoratepathhascornerstruesetcounterrandymark0]
stepcounterrandymark
pgfcoordinaterandymarkarabicrandymarkpgfpoint0pt0pt
%
statestep[auto end on length=1.5pgfdecorationsegmentlength,
auto corner on length=1.5pgfdecorationsegmentlength,
width=+pgfdecorationsegmentlength]
stepcounterrandymarkamplitudesetter
pgfcoordinaterandymarkarabicrandymarkpgfpointpgfdecorationsegmentlengthrand*pgfdecorationsegmentamplitude
%
statefinal
stepcounterrandymark
pgfcoordinaterandymarkarabicrandymarkpgfpointdecoratedpathlast%
%
%

begindocument
begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
pgfmathsetseed2
draw[blue!80!black,thick] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
endtikzpicture

vspace2ex

begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
pgfmathsetseed2
draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
endtikzpicture

vspace2ex

begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
pgfmathsetseed2
renewcommandamplitudesetter%
pgfdecorationsegmentamplitude=0.75mm
ifnumvaluerandymark<48pgfdecorationsegmentamplitude=0.7mmfi%
ifnumvaluerandymark<46pgfdecorationsegmentamplitude=0.6mmfi%
ifnumvaluerandymark<44pgfdecorationsegmentamplitude=0.5mmfi%
ifnumvaluerandymark<42pgfdecorationsegmentamplitude=0.4mmfi%
ifnumvaluerandymark<40pgfdecorationsegmentamplitude=0.3mmfi%
ifnumvaluerandymark<38pgfdecorationsegmentamplitude=0.2mmfi%
ifnumvaluerandymark<36pgfdecorationsegmentamplitude=0.1mmfi%
ifnumvaluerandymark<34pgfdecorationsegmentamplitude=0mmfi%
ifnumvaluerandymark<8pgfdecorationsegmentamplitude=0.75mmfi%

draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
endtikzpicture

vspace2ex

begintikzpicture[x=2.5mm,y=2.5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
pgfmathsetseed2
renewcommandamplitudesetter%
pgfdecorationsegmentamplitude=0.75mm
ifnumvaluerandymark<48pgfdecorationsegmentamplitude=0.7mmfi%
ifnumvaluerandymark<46pgfdecorationsegmentamplitude=0.6mmfi%
ifnumvaluerandymark<44pgfdecorationsegmentamplitude=0.5mmfi%
ifnumvaluerandymark<42pgfdecorationsegmentamplitude=0.4mmfi%
ifnumvaluerandymark<40pgfdecorationsegmentamplitude=0.3mmfi%
ifnumvaluerandymark<38pgfdecorationsegmentamplitude=0.2mmfi%
ifnumvaluerandymark<36pgfdecorationsegmentamplitude=0.1mmfi%
ifnumvaluerandymark<34pgfdecorationsegmentamplitude=0mmfi%
ifnumvaluerandymark<8pgfdecorationsegmentamplitude=0.75mmfi%

draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
endtikzpicture

vspace2ex

begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]
draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
pgfmathsetseed2
draw [red,thick,name=amplitudecontrol] (0,1) -- (2,1) -- (2,0) -- (7,0) -- (12,1) -- (25,1);
draw[blue!80!black,thick] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
endtikzpicture

enddocument









share|improve this question


























    11















    Working with path decorations based on this solution provided by marmot I am searching for a possibility to change the decorations amplitude along the graph.



    Having this plot



    enter image description here



    applying the mentioned decoration gives



    enter image description here



    which is exactly what the decoration is supposed to do.



    In fact the required curve should look like this one:



    enter image description here



    The last output has been created by manually searching the correct positions to manipulate the amplitude which is a "trial and error" method. Changing the dimensions of the tikzpicture will then give a false result, fx



    enter image description here



    Now the basic idea is to provide a separate path (which can be made visible during development) to control the decorations amplitude along the original (blue) curve. In this case the control path (red) would be quite simple:



    enter image description here



    The control path could be interpreted as a factor to the decorations amplitude that can be set via decoration=amplitude=.



    Assuming this method would be quite handy I'm a bit stunned it is not available in TikZ - or have I overseen it? And if it's not: how can I get the y-value of the control curve within the statestep portion of the decorations definition?



    The MWE producing all the above graphs (even if not nicely coded in terms of efficiency and structural beauty):



    documentclassarticle
    usepackagetikz
    usetikzlibrarycalc,decorations.pathmorphing

    newcounterrandymark
    newcommandamplitudesetter
    pgfdeclaredecorationmark random y stepsstart
    %
    statestart[width=+0pt,next state=step,persistent precomputation=pgfdecoratepathhascornerstruesetcounterrandymark0]
    stepcounterrandymark
    pgfcoordinaterandymarkarabicrandymarkpgfpoint0pt0pt
    %
    statestep[auto end on length=1.5pgfdecorationsegmentlength,
    auto corner on length=1.5pgfdecorationsegmentlength,
    width=+pgfdecorationsegmentlength]
    stepcounterrandymarkamplitudesetter
    pgfcoordinaterandymarkarabicrandymarkpgfpointpgfdecorationsegmentlengthrand*pgfdecorationsegmentamplitude
    %
    statefinal
    stepcounterrandymark
    pgfcoordinaterandymarkarabicrandymarkpgfpointdecoratedpathlast%
    %
    %

    begindocument
    begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
    draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
    pgfmathsetseed2
    draw[blue!80!black,thick] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
    endtikzpicture

    vspace2ex

    begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
    draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
    pgfmathsetseed2
    draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
    path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
    draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
    endtikzpicture

    vspace2ex

    begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
    draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
    pgfmathsetseed2
    renewcommandamplitudesetter%
    pgfdecorationsegmentamplitude=0.75mm
    ifnumvaluerandymark<48pgfdecorationsegmentamplitude=0.7mmfi%
    ifnumvaluerandymark<46pgfdecorationsegmentamplitude=0.6mmfi%
    ifnumvaluerandymark<44pgfdecorationsegmentamplitude=0.5mmfi%
    ifnumvaluerandymark<42pgfdecorationsegmentamplitude=0.4mmfi%
    ifnumvaluerandymark<40pgfdecorationsegmentamplitude=0.3mmfi%
    ifnumvaluerandymark<38pgfdecorationsegmentamplitude=0.2mmfi%
    ifnumvaluerandymark<36pgfdecorationsegmentamplitude=0.1mmfi%
    ifnumvaluerandymark<34pgfdecorationsegmentamplitude=0mmfi%
    ifnumvaluerandymark<8pgfdecorationsegmentamplitude=0.75mmfi%

    draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
    path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
    draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
    endtikzpicture

    vspace2ex

    begintikzpicture[x=2.5mm,y=2.5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
    draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
    pgfmathsetseed2
    renewcommandamplitudesetter%
    pgfdecorationsegmentamplitude=0.75mm
    ifnumvaluerandymark<48pgfdecorationsegmentamplitude=0.7mmfi%
    ifnumvaluerandymark<46pgfdecorationsegmentamplitude=0.6mmfi%
    ifnumvaluerandymark<44pgfdecorationsegmentamplitude=0.5mmfi%
    ifnumvaluerandymark<42pgfdecorationsegmentamplitude=0.4mmfi%
    ifnumvaluerandymark<40pgfdecorationsegmentamplitude=0.3mmfi%
    ifnumvaluerandymark<38pgfdecorationsegmentamplitude=0.2mmfi%
    ifnumvaluerandymark<36pgfdecorationsegmentamplitude=0.1mmfi%
    ifnumvaluerandymark<34pgfdecorationsegmentamplitude=0mmfi%
    ifnumvaluerandymark<8pgfdecorationsegmentamplitude=0.75mmfi%

    draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
    path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
    draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
    endtikzpicture

    vspace2ex

    begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]
    draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
    pgfmathsetseed2
    draw [red,thick,name=amplitudecontrol] (0,1) -- (2,1) -- (2,0) -- (7,0) -- (12,1) -- (25,1);
    draw[blue!80!black,thick] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
    endtikzpicture

    enddocument









    share|improve this question
























      11












      11








      11


      1






      Working with path decorations based on this solution provided by marmot I am searching for a possibility to change the decorations amplitude along the graph.



      Having this plot



      enter image description here



      applying the mentioned decoration gives



      enter image description here



      which is exactly what the decoration is supposed to do.



      In fact the required curve should look like this one:



      enter image description here



      The last output has been created by manually searching the correct positions to manipulate the amplitude which is a "trial and error" method. Changing the dimensions of the tikzpicture will then give a false result, fx



      enter image description here



      Now the basic idea is to provide a separate path (which can be made visible during development) to control the decorations amplitude along the original (blue) curve. In this case the control path (red) would be quite simple:



      enter image description here



      The control path could be interpreted as a factor to the decorations amplitude that can be set via decoration=amplitude=.



      Assuming this method would be quite handy I'm a bit stunned it is not available in TikZ - or have I overseen it? And if it's not: how can I get the y-value of the control curve within the statestep portion of the decorations definition?



      The MWE producing all the above graphs (even if not nicely coded in terms of efficiency and structural beauty):



      documentclassarticle
      usepackagetikz
      usetikzlibrarycalc,decorations.pathmorphing

      newcounterrandymark
      newcommandamplitudesetter
      pgfdeclaredecorationmark random y stepsstart
      %
      statestart[width=+0pt,next state=step,persistent precomputation=pgfdecoratepathhascornerstruesetcounterrandymark0]
      stepcounterrandymark
      pgfcoordinaterandymarkarabicrandymarkpgfpoint0pt0pt
      %
      statestep[auto end on length=1.5pgfdecorationsegmentlength,
      auto corner on length=1.5pgfdecorationsegmentlength,
      width=+pgfdecorationsegmentlength]
      stepcounterrandymarkamplitudesetter
      pgfcoordinaterandymarkarabicrandymarkpgfpointpgfdecorationsegmentlengthrand*pgfdecorationsegmentamplitude
      %
      statefinal
      stepcounterrandymark
      pgfcoordinaterandymarkarabicrandymarkpgfpointdecoratedpathlast%
      %
      %

      begindocument
      begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
      draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
      pgfmathsetseed2
      draw[blue!80!black,thick] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
      endtikzpicture

      vspace2ex

      begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
      draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
      pgfmathsetseed2
      draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
      path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
      draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
      endtikzpicture

      vspace2ex

      begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
      draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
      pgfmathsetseed2
      renewcommandamplitudesetter%
      pgfdecorationsegmentamplitude=0.75mm
      ifnumvaluerandymark<48pgfdecorationsegmentamplitude=0.7mmfi%
      ifnumvaluerandymark<46pgfdecorationsegmentamplitude=0.6mmfi%
      ifnumvaluerandymark<44pgfdecorationsegmentamplitude=0.5mmfi%
      ifnumvaluerandymark<42pgfdecorationsegmentamplitude=0.4mmfi%
      ifnumvaluerandymark<40pgfdecorationsegmentamplitude=0.3mmfi%
      ifnumvaluerandymark<38pgfdecorationsegmentamplitude=0.2mmfi%
      ifnumvaluerandymark<36pgfdecorationsegmentamplitude=0.1mmfi%
      ifnumvaluerandymark<34pgfdecorationsegmentamplitude=0mmfi%
      ifnumvaluerandymark<8pgfdecorationsegmentamplitude=0.75mmfi%

      draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
      path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
      draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
      endtikzpicture

      vspace2ex

      begintikzpicture[x=2.5mm,y=2.5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
      draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
      pgfmathsetseed2
      renewcommandamplitudesetter%
      pgfdecorationsegmentamplitude=0.75mm
      ifnumvaluerandymark<48pgfdecorationsegmentamplitude=0.7mmfi%
      ifnumvaluerandymark<46pgfdecorationsegmentamplitude=0.6mmfi%
      ifnumvaluerandymark<44pgfdecorationsegmentamplitude=0.5mmfi%
      ifnumvaluerandymark<42pgfdecorationsegmentamplitude=0.4mmfi%
      ifnumvaluerandymark<40pgfdecorationsegmentamplitude=0.3mmfi%
      ifnumvaluerandymark<38pgfdecorationsegmentamplitude=0.2mmfi%
      ifnumvaluerandymark<36pgfdecorationsegmentamplitude=0.1mmfi%
      ifnumvaluerandymark<34pgfdecorationsegmentamplitude=0mmfi%
      ifnumvaluerandymark<8pgfdecorationsegmentamplitude=0.75mmfi%

      draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
      path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
      draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
      endtikzpicture

      vspace2ex

      begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]
      draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
      pgfmathsetseed2
      draw [red,thick,name=amplitudecontrol] (0,1) -- (2,1) -- (2,0) -- (7,0) -- (12,1) -- (25,1);
      draw[blue!80!black,thick] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
      endtikzpicture

      enddocument









      share|improve this question














      Working with path decorations based on this solution provided by marmot I am searching for a possibility to change the decorations amplitude along the graph.



      Having this plot



      enter image description here



      applying the mentioned decoration gives



      enter image description here



      which is exactly what the decoration is supposed to do.



      In fact the required curve should look like this one:



      enter image description here



      The last output has been created by manually searching the correct positions to manipulate the amplitude which is a "trial and error" method. Changing the dimensions of the tikzpicture will then give a false result, fx



      enter image description here



      Now the basic idea is to provide a separate path (which can be made visible during development) to control the decorations amplitude along the original (blue) curve. In this case the control path (red) would be quite simple:



      enter image description here



      The control path could be interpreted as a factor to the decorations amplitude that can be set via decoration=amplitude=.



      Assuming this method would be quite handy I'm a bit stunned it is not available in TikZ - or have I overseen it? And if it's not: how can I get the y-value of the control curve within the statestep portion of the decorations definition?



      The MWE producing all the above graphs (even if not nicely coded in terms of efficiency and structural beauty):



      documentclassarticle
      usepackagetikz
      usetikzlibrarycalc,decorations.pathmorphing

      newcounterrandymark
      newcommandamplitudesetter
      pgfdeclaredecorationmark random y stepsstart
      %
      statestart[width=+0pt,next state=step,persistent precomputation=pgfdecoratepathhascornerstruesetcounterrandymark0]
      stepcounterrandymark
      pgfcoordinaterandymarkarabicrandymarkpgfpoint0pt0pt
      %
      statestep[auto end on length=1.5pgfdecorationsegmentlength,
      auto corner on length=1.5pgfdecorationsegmentlength,
      width=+pgfdecorationsegmentlength]
      stepcounterrandymarkamplitudesetter
      pgfcoordinaterandymarkarabicrandymarkpgfpointpgfdecorationsegmentlengthrand*pgfdecorationsegmentamplitude
      %
      statefinal
      stepcounterrandymark
      pgfcoordinaterandymarkarabicrandymarkpgfpointdecoratedpathlast%
      %
      %

      begindocument
      begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
      draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
      pgfmathsetseed2
      draw[blue!80!black,thick] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
      endtikzpicture

      vspace2ex

      begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
      draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
      pgfmathsetseed2
      draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
      path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
      draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
      endtikzpicture

      vspace2ex

      begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
      draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
      pgfmathsetseed2
      renewcommandamplitudesetter%
      pgfdecorationsegmentamplitude=0.75mm
      ifnumvaluerandymark<48pgfdecorationsegmentamplitude=0.7mmfi%
      ifnumvaluerandymark<46pgfdecorationsegmentamplitude=0.6mmfi%
      ifnumvaluerandymark<44pgfdecorationsegmentamplitude=0.5mmfi%
      ifnumvaluerandymark<42pgfdecorationsegmentamplitude=0.4mmfi%
      ifnumvaluerandymark<40pgfdecorationsegmentamplitude=0.3mmfi%
      ifnumvaluerandymark<38pgfdecorationsegmentamplitude=0.2mmfi%
      ifnumvaluerandymark<36pgfdecorationsegmentamplitude=0.1mmfi%
      ifnumvaluerandymark<34pgfdecorationsegmentamplitude=0mmfi%
      ifnumvaluerandymark<8pgfdecorationsegmentamplitude=0.75mmfi%

      draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
      path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
      draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
      endtikzpicture

      vspace2ex

      begintikzpicture[x=2.5mm,y=2.5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
      draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
      pgfmathsetseed2
      renewcommandamplitudesetter%
      pgfdecorationsegmentamplitude=0.75mm
      ifnumvaluerandymark<48pgfdecorationsegmentamplitude=0.7mmfi%
      ifnumvaluerandymark<46pgfdecorationsegmentamplitude=0.6mmfi%
      ifnumvaluerandymark<44pgfdecorationsegmentamplitude=0.5mmfi%
      ifnumvaluerandymark<42pgfdecorationsegmentamplitude=0.4mmfi%
      ifnumvaluerandymark<40pgfdecorationsegmentamplitude=0.3mmfi%
      ifnumvaluerandymark<38pgfdecorationsegmentamplitude=0.2mmfi%
      ifnumvaluerandymark<36pgfdecorationsegmentamplitude=0.1mmfi%
      ifnumvaluerandymark<34pgfdecorationsegmentamplitude=0mmfi%
      ifnumvaluerandymark<8pgfdecorationsegmentamplitude=0.75mmfi%

      draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
      path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
      draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
      endtikzpicture

      vspace2ex

      begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]
      draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
      pgfmathsetseed2
      draw [red,thick,name=amplitudecontrol] (0,1) -- (2,1) -- (2,0) -- (7,0) -- (12,1) -- (25,1);
      draw[blue!80!black,thick] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
      endtikzpicture

      enddocument






      tikz-pgf decorations tikz-decorations






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 17 at 11:27









      AndiWAndiW

      3811212




      3811212




















          1 Answer
          1






          active

          oldest

          votes


















          12














          Let me start by saying that I really like that question and am truly impressed by what you have achieved. Here is a proposal to address the scalability. Define a function that governs the amplitude,



          varyingamp(x) = whatever you like


          where x is the fraction of the decorated path (in order to ensure scalability). (Such a function has been used already here in order to have variable varying line widths. I would not at all be surprised if similar things had been used before.) This is the MWE.



          documentclassarticle
          usepackagetikz
          usetikzlibrarycalc,decorations.pathmorphing

          newcounterrandymark
          %newcommandamplitudesetter
          pgfdeclaredecorationmark random y stepsstart
          %
          statestart[width=+0pt,next state=step,persistent precomputation=
          pgfdecoratepathhascornerstruesetcounterrandymark0]
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpoint0pt0pt
          %
          statestep[auto end on length=1.5pgfdecorationsegmentlength,
          auto corner on length=1.5pgfdecorationsegmentlength,
          width=+pgfdecorationsegmentlength]
          stepcounterrandymark%amplitudesetter
          pgfcoordinaterandymarkarabicrandymarkpgfpointpgfdecorationsegmentlengthrand*pgfdecorationsegmentamplitude
          %
          statefinal
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpointdecoratedpathlast%
          %
          %

          pgfdeclaredecorationmark varying random y stepsstart
          %
          statestart[width=+0pt,next state=step,persistent precomputation=
          pgfdecoratepathhascornerstruesetcounterrandymark0]
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpoint0pt0pt
          %
          statestep[auto end on length=1.5pgfdecorationsegmentlength,
          auto corner on length=1.5pgfdecorationsegmentlength,
          width=+pgfdecorationsegmentlength]
          stepcounterrandymark
          pgfmathsetmacromyfractionthepgfdecorationsegmentlength*valuerandymark/pgfdecoratedpathlength
          pgfmathsetmacromyamplitudevaryingamp(myfraction)
          %typeoutmyfraction,myamplitude
          pgfcoordinaterandymarkarabicrandymarkpgfpointpgfdecorationsegmentlengthrand*myamplitude*pgfdecorationsegmentamplitude
          %
          statefinal
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpointdecoratedpathlast%
          %
          %



          begindocument
          begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
          draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
          pgfmathsetseed2
          draw[blue!80!black,thick] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          endtikzpicture

          vspace2ex

          begintikzpicture[x=5mm,y=5mm,decoration=mark varying random y steps,segment
          length=1.5mm,amplitude=0.75mm,declare function=
          varyingamp(x)=ifthenelse(x<0.08,1,ifthenelse(x<0.28,0,ifthenelse(x<0.48,5*(x-0.28),1)));]%
          draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
          draw[red,thick] plot[variable=x,domain=0:25,samples=101] (x,varyingamp(x/25));
          pgfmathsetseed2
          draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
          endtikzpicture

          vspace2ex

          begintikzpicture[x=2.5mm,y=2.5mm,decoration=mark varying random y
          steps,segment length=0.75mm,amplitude=0.75mm,declare function=
          varyingamp(x)=ifthenelse(x<0.08,1,ifthenelse(x<0.28,0,ifthenelse(x<0.48,5*(x-0.28),1)));]
          draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
          pgfmathsetseed2
          draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
          endtikzpicture
          enddocument


          enter image description here



          The function is shown in red in the second plot. The third plot shows scalability. (Of course, you also need to rescale the segment lengths. Notice also that this decoration has discrete steps, so if you have a strongly varying function but only a few steps, the function may not be fully "appreciated" since it only gets evaluated at a few points.)






          share|improve this answer


















          • 1





            +1 for this amazing answer, and I wish I could +1 another time for the first sentence only...

            – JouleV
            Mar 17 at 16:03











          • @marmot you know you're driving me crazy, don't you? I did not even get a basic function implemented yet and you, well, uh. Ok, I'm digging through this one. Btw: x holds the fraction of pgfdecoratedpathlength, right? Even if your approach is more elegant than mine it's not the red curve that controls the amplitude... Therefore I would like to keep the question still open if you don't mind...

            – AndiW
            Mar 17 at 16:35






          • 1





            @AndiW Sorry for driving you crazy. ;-) The function drawn in red does determine the amplitude, i.e. the random deviation is rand*varyingamp(s)*pgfdecorationsegmentamplitude, where s denotes the fraction of the path we are at. Of course, s is not the x value of the curve at that point, which would not be independent of the coordinate system. You could of course define your own function that returns the path length s (or fraction) a a function of x, which would work in this specific case because here it is single-valued but in general it is not. (I'm just back from cycling.... )

            – marmot
            Mar 17 at 18:37






          • 1





            @AndiW Yes. What you are saying is correct, but is not contradicting with any of my statements, is it?

            – marmot
            Mar 17 at 20:21






          • 1





            @marmot well - actually I sometimes forget that LaTeX is no low-level-end-user tool. Given the fact that it's a function controling the amplitude and not a graph (which would be something an end-user would expect) the answer is great. Having quit physics 25 yrs ago I have to change my approach I guess... :-) +1!

            – AndiW
            Mar 17 at 21:04










          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "85"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f479915%2ftikz-decoration-control-decoration-amplitude-along-curve%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          12














          Let me start by saying that I really like that question and am truly impressed by what you have achieved. Here is a proposal to address the scalability. Define a function that governs the amplitude,



          varyingamp(x) = whatever you like


          where x is the fraction of the decorated path (in order to ensure scalability). (Such a function has been used already here in order to have variable varying line widths. I would not at all be surprised if similar things had been used before.) This is the MWE.



          documentclassarticle
          usepackagetikz
          usetikzlibrarycalc,decorations.pathmorphing

          newcounterrandymark
          %newcommandamplitudesetter
          pgfdeclaredecorationmark random y stepsstart
          %
          statestart[width=+0pt,next state=step,persistent precomputation=
          pgfdecoratepathhascornerstruesetcounterrandymark0]
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpoint0pt0pt
          %
          statestep[auto end on length=1.5pgfdecorationsegmentlength,
          auto corner on length=1.5pgfdecorationsegmentlength,
          width=+pgfdecorationsegmentlength]
          stepcounterrandymark%amplitudesetter
          pgfcoordinaterandymarkarabicrandymarkpgfpointpgfdecorationsegmentlengthrand*pgfdecorationsegmentamplitude
          %
          statefinal
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpointdecoratedpathlast%
          %
          %

          pgfdeclaredecorationmark varying random y stepsstart
          %
          statestart[width=+0pt,next state=step,persistent precomputation=
          pgfdecoratepathhascornerstruesetcounterrandymark0]
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpoint0pt0pt
          %
          statestep[auto end on length=1.5pgfdecorationsegmentlength,
          auto corner on length=1.5pgfdecorationsegmentlength,
          width=+pgfdecorationsegmentlength]
          stepcounterrandymark
          pgfmathsetmacromyfractionthepgfdecorationsegmentlength*valuerandymark/pgfdecoratedpathlength
          pgfmathsetmacromyamplitudevaryingamp(myfraction)
          %typeoutmyfraction,myamplitude
          pgfcoordinaterandymarkarabicrandymarkpgfpointpgfdecorationsegmentlengthrand*myamplitude*pgfdecorationsegmentamplitude
          %
          statefinal
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpointdecoratedpathlast%
          %
          %



          begindocument
          begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
          draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
          pgfmathsetseed2
          draw[blue!80!black,thick] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          endtikzpicture

          vspace2ex

          begintikzpicture[x=5mm,y=5mm,decoration=mark varying random y steps,segment
          length=1.5mm,amplitude=0.75mm,declare function=
          varyingamp(x)=ifthenelse(x<0.08,1,ifthenelse(x<0.28,0,ifthenelse(x<0.48,5*(x-0.28),1)));]%
          draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
          draw[red,thick] plot[variable=x,domain=0:25,samples=101] (x,varyingamp(x/25));
          pgfmathsetseed2
          draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
          endtikzpicture

          vspace2ex

          begintikzpicture[x=2.5mm,y=2.5mm,decoration=mark varying random y
          steps,segment length=0.75mm,amplitude=0.75mm,declare function=
          varyingamp(x)=ifthenelse(x<0.08,1,ifthenelse(x<0.28,0,ifthenelse(x<0.48,5*(x-0.28),1)));]
          draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
          pgfmathsetseed2
          draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
          endtikzpicture
          enddocument


          enter image description here



          The function is shown in red in the second plot. The third plot shows scalability. (Of course, you also need to rescale the segment lengths. Notice also that this decoration has discrete steps, so if you have a strongly varying function but only a few steps, the function may not be fully "appreciated" since it only gets evaluated at a few points.)






          share|improve this answer


















          • 1





            +1 for this amazing answer, and I wish I could +1 another time for the first sentence only...

            – JouleV
            Mar 17 at 16:03











          • @marmot you know you're driving me crazy, don't you? I did not even get a basic function implemented yet and you, well, uh. Ok, I'm digging through this one. Btw: x holds the fraction of pgfdecoratedpathlength, right? Even if your approach is more elegant than mine it's not the red curve that controls the amplitude... Therefore I would like to keep the question still open if you don't mind...

            – AndiW
            Mar 17 at 16:35






          • 1





            @AndiW Sorry for driving you crazy. ;-) The function drawn in red does determine the amplitude, i.e. the random deviation is rand*varyingamp(s)*pgfdecorationsegmentamplitude, where s denotes the fraction of the path we are at. Of course, s is not the x value of the curve at that point, which would not be independent of the coordinate system. You could of course define your own function that returns the path length s (or fraction) a a function of x, which would work in this specific case because here it is single-valued but in general it is not. (I'm just back from cycling.... )

            – marmot
            Mar 17 at 18:37






          • 1





            @AndiW Yes. What you are saying is correct, but is not contradicting with any of my statements, is it?

            – marmot
            Mar 17 at 20:21






          • 1





            @marmot well - actually I sometimes forget that LaTeX is no low-level-end-user tool. Given the fact that it's a function controling the amplitude and not a graph (which would be something an end-user would expect) the answer is great. Having quit physics 25 yrs ago I have to change my approach I guess... :-) +1!

            – AndiW
            Mar 17 at 21:04















          12














          Let me start by saying that I really like that question and am truly impressed by what you have achieved. Here is a proposal to address the scalability. Define a function that governs the amplitude,



          varyingamp(x) = whatever you like


          where x is the fraction of the decorated path (in order to ensure scalability). (Such a function has been used already here in order to have variable varying line widths. I would not at all be surprised if similar things had been used before.) This is the MWE.



          documentclassarticle
          usepackagetikz
          usetikzlibrarycalc,decorations.pathmorphing

          newcounterrandymark
          %newcommandamplitudesetter
          pgfdeclaredecorationmark random y stepsstart
          %
          statestart[width=+0pt,next state=step,persistent precomputation=
          pgfdecoratepathhascornerstruesetcounterrandymark0]
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpoint0pt0pt
          %
          statestep[auto end on length=1.5pgfdecorationsegmentlength,
          auto corner on length=1.5pgfdecorationsegmentlength,
          width=+pgfdecorationsegmentlength]
          stepcounterrandymark%amplitudesetter
          pgfcoordinaterandymarkarabicrandymarkpgfpointpgfdecorationsegmentlengthrand*pgfdecorationsegmentamplitude
          %
          statefinal
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpointdecoratedpathlast%
          %
          %

          pgfdeclaredecorationmark varying random y stepsstart
          %
          statestart[width=+0pt,next state=step,persistent precomputation=
          pgfdecoratepathhascornerstruesetcounterrandymark0]
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpoint0pt0pt
          %
          statestep[auto end on length=1.5pgfdecorationsegmentlength,
          auto corner on length=1.5pgfdecorationsegmentlength,
          width=+pgfdecorationsegmentlength]
          stepcounterrandymark
          pgfmathsetmacromyfractionthepgfdecorationsegmentlength*valuerandymark/pgfdecoratedpathlength
          pgfmathsetmacromyamplitudevaryingamp(myfraction)
          %typeoutmyfraction,myamplitude
          pgfcoordinaterandymarkarabicrandymarkpgfpointpgfdecorationsegmentlengthrand*myamplitude*pgfdecorationsegmentamplitude
          %
          statefinal
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpointdecoratedpathlast%
          %
          %



          begindocument
          begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
          draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
          pgfmathsetseed2
          draw[blue!80!black,thick] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          endtikzpicture

          vspace2ex

          begintikzpicture[x=5mm,y=5mm,decoration=mark varying random y steps,segment
          length=1.5mm,amplitude=0.75mm,declare function=
          varyingamp(x)=ifthenelse(x<0.08,1,ifthenelse(x<0.28,0,ifthenelse(x<0.48,5*(x-0.28),1)));]%
          draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
          draw[red,thick] plot[variable=x,domain=0:25,samples=101] (x,varyingamp(x/25));
          pgfmathsetseed2
          draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
          endtikzpicture

          vspace2ex

          begintikzpicture[x=2.5mm,y=2.5mm,decoration=mark varying random y
          steps,segment length=0.75mm,amplitude=0.75mm,declare function=
          varyingamp(x)=ifthenelse(x<0.08,1,ifthenelse(x<0.28,0,ifthenelse(x<0.48,5*(x-0.28),1)));]
          draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
          pgfmathsetseed2
          draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
          endtikzpicture
          enddocument


          enter image description here



          The function is shown in red in the second plot. The third plot shows scalability. (Of course, you also need to rescale the segment lengths. Notice also that this decoration has discrete steps, so if you have a strongly varying function but only a few steps, the function may not be fully "appreciated" since it only gets evaluated at a few points.)






          share|improve this answer


















          • 1





            +1 for this amazing answer, and I wish I could +1 another time for the first sentence only...

            – JouleV
            Mar 17 at 16:03











          • @marmot you know you're driving me crazy, don't you? I did not even get a basic function implemented yet and you, well, uh. Ok, I'm digging through this one. Btw: x holds the fraction of pgfdecoratedpathlength, right? Even if your approach is more elegant than mine it's not the red curve that controls the amplitude... Therefore I would like to keep the question still open if you don't mind...

            – AndiW
            Mar 17 at 16:35






          • 1





            @AndiW Sorry for driving you crazy. ;-) The function drawn in red does determine the amplitude, i.e. the random deviation is rand*varyingamp(s)*pgfdecorationsegmentamplitude, where s denotes the fraction of the path we are at. Of course, s is not the x value of the curve at that point, which would not be independent of the coordinate system. You could of course define your own function that returns the path length s (or fraction) a a function of x, which would work in this specific case because here it is single-valued but in general it is not. (I'm just back from cycling.... )

            – marmot
            Mar 17 at 18:37






          • 1





            @AndiW Yes. What you are saying is correct, but is not contradicting with any of my statements, is it?

            – marmot
            Mar 17 at 20:21






          • 1





            @marmot well - actually I sometimes forget that LaTeX is no low-level-end-user tool. Given the fact that it's a function controling the amplitude and not a graph (which would be something an end-user would expect) the answer is great. Having quit physics 25 yrs ago I have to change my approach I guess... :-) +1!

            – AndiW
            Mar 17 at 21:04













          12












          12








          12







          Let me start by saying that I really like that question and am truly impressed by what you have achieved. Here is a proposal to address the scalability. Define a function that governs the amplitude,



          varyingamp(x) = whatever you like


          where x is the fraction of the decorated path (in order to ensure scalability). (Such a function has been used already here in order to have variable varying line widths. I would not at all be surprised if similar things had been used before.) This is the MWE.



          documentclassarticle
          usepackagetikz
          usetikzlibrarycalc,decorations.pathmorphing

          newcounterrandymark
          %newcommandamplitudesetter
          pgfdeclaredecorationmark random y stepsstart
          %
          statestart[width=+0pt,next state=step,persistent precomputation=
          pgfdecoratepathhascornerstruesetcounterrandymark0]
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpoint0pt0pt
          %
          statestep[auto end on length=1.5pgfdecorationsegmentlength,
          auto corner on length=1.5pgfdecorationsegmentlength,
          width=+pgfdecorationsegmentlength]
          stepcounterrandymark%amplitudesetter
          pgfcoordinaterandymarkarabicrandymarkpgfpointpgfdecorationsegmentlengthrand*pgfdecorationsegmentamplitude
          %
          statefinal
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpointdecoratedpathlast%
          %
          %

          pgfdeclaredecorationmark varying random y stepsstart
          %
          statestart[width=+0pt,next state=step,persistent precomputation=
          pgfdecoratepathhascornerstruesetcounterrandymark0]
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpoint0pt0pt
          %
          statestep[auto end on length=1.5pgfdecorationsegmentlength,
          auto corner on length=1.5pgfdecorationsegmentlength,
          width=+pgfdecorationsegmentlength]
          stepcounterrandymark
          pgfmathsetmacromyfractionthepgfdecorationsegmentlength*valuerandymark/pgfdecoratedpathlength
          pgfmathsetmacromyamplitudevaryingamp(myfraction)
          %typeoutmyfraction,myamplitude
          pgfcoordinaterandymarkarabicrandymarkpgfpointpgfdecorationsegmentlengthrand*myamplitude*pgfdecorationsegmentamplitude
          %
          statefinal
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpointdecoratedpathlast%
          %
          %



          begindocument
          begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
          draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
          pgfmathsetseed2
          draw[blue!80!black,thick] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          endtikzpicture

          vspace2ex

          begintikzpicture[x=5mm,y=5mm,decoration=mark varying random y steps,segment
          length=1.5mm,amplitude=0.75mm,declare function=
          varyingamp(x)=ifthenelse(x<0.08,1,ifthenelse(x<0.28,0,ifthenelse(x<0.48,5*(x-0.28),1)));]%
          draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
          draw[red,thick] plot[variable=x,domain=0:25,samples=101] (x,varyingamp(x/25));
          pgfmathsetseed2
          draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
          endtikzpicture

          vspace2ex

          begintikzpicture[x=2.5mm,y=2.5mm,decoration=mark varying random y
          steps,segment length=0.75mm,amplitude=0.75mm,declare function=
          varyingamp(x)=ifthenelse(x<0.08,1,ifthenelse(x<0.28,0,ifthenelse(x<0.48,5*(x-0.28),1)));]
          draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
          pgfmathsetseed2
          draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
          endtikzpicture
          enddocument


          enter image description here



          The function is shown in red in the second plot. The third plot shows scalability. (Of course, you also need to rescale the segment lengths. Notice also that this decoration has discrete steps, so if you have a strongly varying function but only a few steps, the function may not be fully "appreciated" since it only gets evaluated at a few points.)






          share|improve this answer













          Let me start by saying that I really like that question and am truly impressed by what you have achieved. Here is a proposal to address the scalability. Define a function that governs the amplitude,



          varyingamp(x) = whatever you like


          where x is the fraction of the decorated path (in order to ensure scalability). (Such a function has been used already here in order to have variable varying line widths. I would not at all be surprised if similar things had been used before.) This is the MWE.



          documentclassarticle
          usepackagetikz
          usetikzlibrarycalc,decorations.pathmorphing

          newcounterrandymark
          %newcommandamplitudesetter
          pgfdeclaredecorationmark random y stepsstart
          %
          statestart[width=+0pt,next state=step,persistent precomputation=
          pgfdecoratepathhascornerstruesetcounterrandymark0]
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpoint0pt0pt
          %
          statestep[auto end on length=1.5pgfdecorationsegmentlength,
          auto corner on length=1.5pgfdecorationsegmentlength,
          width=+pgfdecorationsegmentlength]
          stepcounterrandymark%amplitudesetter
          pgfcoordinaterandymarkarabicrandymarkpgfpointpgfdecorationsegmentlengthrand*pgfdecorationsegmentamplitude
          %
          statefinal
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpointdecoratedpathlast%
          %
          %

          pgfdeclaredecorationmark varying random y stepsstart
          %
          statestart[width=+0pt,next state=step,persistent precomputation=
          pgfdecoratepathhascornerstruesetcounterrandymark0]
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpoint0pt0pt
          %
          statestep[auto end on length=1.5pgfdecorationsegmentlength,
          auto corner on length=1.5pgfdecorationsegmentlength,
          width=+pgfdecorationsegmentlength]
          stepcounterrandymark
          pgfmathsetmacromyfractionthepgfdecorationsegmentlength*valuerandymark/pgfdecoratedpathlength
          pgfmathsetmacromyamplitudevaryingamp(myfraction)
          %typeoutmyfraction,myamplitude
          pgfcoordinaterandymarkarabicrandymarkpgfpointpgfdecorationsegmentlengthrand*myamplitude*pgfdecorationsegmentamplitude
          %
          statefinal
          stepcounterrandymark
          pgfcoordinaterandymarkarabicrandymarkpgfpointdecoratedpathlast%
          %
          %



          begindocument
          begintikzpicture[x=5mm,y=5mm,decoration=mark random y steps,segment length=1.5mm,amplitude=0.75mm]% original curve
          draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
          pgfmathsetseed2
          draw[blue!80!black,thick] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          endtikzpicture

          vspace2ex

          begintikzpicture[x=5mm,y=5mm,decoration=mark varying random y steps,segment
          length=1.5mm,amplitude=0.75mm,declare function=
          varyingamp(x)=ifthenelse(x<0.08,1,ifthenelse(x<0.28,0,ifthenelse(x<0.48,5*(x-0.28),1)));]%
          draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
          draw[red,thick] plot[variable=x,domain=0:25,samples=101] (x,varyingamp(x/25));
          pgfmathsetseed2
          draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
          endtikzpicture

          vspace2ex

          begintikzpicture[x=2.5mm,y=2.5mm,decoration=mark varying random y
          steps,segment length=0.75mm,amplitude=0.75mm,declare function=
          varyingamp(x)=ifthenelse(x<0.08,1,ifthenelse(x<0.28,0,ifthenelse(x<0.48,5*(x-0.28),1)));]
          draw[style=help lines] (0,-4) grid[step=5mm] (25,1);
          pgfmathsetseed2
          draw[black] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          path[decorate] (0,0) -- (2,0) to [out=0,in=180](4,-3.5) to [out=0,in=225](6,-1.75) to [out=45,in=180](11,0) -- (24.25,0);
          draw[blue!80!black,thick] plot[variable=x,samples at=1,...,arabicrandymark,smooth] (randymarkx);
          endtikzpicture
          enddocument


          enter image description here



          The function is shown in red in the second plot. The third plot shows scalability. (Of course, you also need to rescale the segment lengths. Notice also that this decoration has discrete steps, so if you have a strongly varying function but only a few steps, the function may not be fully "appreciated" since it only gets evaluated at a few points.)







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Mar 17 at 16:02









          marmotmarmot

          110k5136255




          110k5136255







          • 1





            +1 for this amazing answer, and I wish I could +1 another time for the first sentence only...

            – JouleV
            Mar 17 at 16:03











          • @marmot you know you're driving me crazy, don't you? I did not even get a basic function implemented yet and you, well, uh. Ok, I'm digging through this one. Btw: x holds the fraction of pgfdecoratedpathlength, right? Even if your approach is more elegant than mine it's not the red curve that controls the amplitude... Therefore I would like to keep the question still open if you don't mind...

            – AndiW
            Mar 17 at 16:35






          • 1





            @AndiW Sorry for driving you crazy. ;-) The function drawn in red does determine the amplitude, i.e. the random deviation is rand*varyingamp(s)*pgfdecorationsegmentamplitude, where s denotes the fraction of the path we are at. Of course, s is not the x value of the curve at that point, which would not be independent of the coordinate system. You could of course define your own function that returns the path length s (or fraction) a a function of x, which would work in this specific case because here it is single-valued but in general it is not. (I'm just back from cycling.... )

            – marmot
            Mar 17 at 18:37






          • 1





            @AndiW Yes. What you are saying is correct, but is not contradicting with any of my statements, is it?

            – marmot
            Mar 17 at 20:21






          • 1





            @marmot well - actually I sometimes forget that LaTeX is no low-level-end-user tool. Given the fact that it's a function controling the amplitude and not a graph (which would be something an end-user would expect) the answer is great. Having quit physics 25 yrs ago I have to change my approach I guess... :-) +1!

            – AndiW
            Mar 17 at 21:04












          • 1





            +1 for this amazing answer, and I wish I could +1 another time for the first sentence only...

            – JouleV
            Mar 17 at 16:03











          • @marmot you know you're driving me crazy, don't you? I did not even get a basic function implemented yet and you, well, uh. Ok, I'm digging through this one. Btw: x holds the fraction of pgfdecoratedpathlength, right? Even if your approach is more elegant than mine it's not the red curve that controls the amplitude... Therefore I would like to keep the question still open if you don't mind...

            – AndiW
            Mar 17 at 16:35






          • 1





            @AndiW Sorry for driving you crazy. ;-) The function drawn in red does determine the amplitude, i.e. the random deviation is rand*varyingamp(s)*pgfdecorationsegmentamplitude, where s denotes the fraction of the path we are at. Of course, s is not the x value of the curve at that point, which would not be independent of the coordinate system. You could of course define your own function that returns the path length s (or fraction) a a function of x, which would work in this specific case because here it is single-valued but in general it is not. (I'm just back from cycling.... )

            – marmot
            Mar 17 at 18:37






          • 1





            @AndiW Yes. What you are saying is correct, but is not contradicting with any of my statements, is it?

            – marmot
            Mar 17 at 20:21






          • 1





            @marmot well - actually I sometimes forget that LaTeX is no low-level-end-user tool. Given the fact that it's a function controling the amplitude and not a graph (which would be something an end-user would expect) the answer is great. Having quit physics 25 yrs ago I have to change my approach I guess... :-) +1!

            – AndiW
            Mar 17 at 21:04







          1




          1





          +1 for this amazing answer, and I wish I could +1 another time for the first sentence only...

          – JouleV
          Mar 17 at 16:03





          +1 for this amazing answer, and I wish I could +1 another time for the first sentence only...

          – JouleV
          Mar 17 at 16:03













          @marmot you know you're driving me crazy, don't you? I did not even get a basic function implemented yet and you, well, uh. Ok, I'm digging through this one. Btw: x holds the fraction of pgfdecoratedpathlength, right? Even if your approach is more elegant than mine it's not the red curve that controls the amplitude... Therefore I would like to keep the question still open if you don't mind...

          – AndiW
          Mar 17 at 16:35





          @marmot you know you're driving me crazy, don't you? I did not even get a basic function implemented yet and you, well, uh. Ok, I'm digging through this one. Btw: x holds the fraction of pgfdecoratedpathlength, right? Even if your approach is more elegant than mine it's not the red curve that controls the amplitude... Therefore I would like to keep the question still open if you don't mind...

          – AndiW
          Mar 17 at 16:35




          1




          1





          @AndiW Sorry for driving you crazy. ;-) The function drawn in red does determine the amplitude, i.e. the random deviation is rand*varyingamp(s)*pgfdecorationsegmentamplitude, where s denotes the fraction of the path we are at. Of course, s is not the x value of the curve at that point, which would not be independent of the coordinate system. You could of course define your own function that returns the path length s (or fraction) a a function of x, which would work in this specific case because here it is single-valued but in general it is not. (I'm just back from cycling.... )

          – marmot
          Mar 17 at 18:37





          @AndiW Sorry for driving you crazy. ;-) The function drawn in red does determine the amplitude, i.e. the random deviation is rand*varyingamp(s)*pgfdecorationsegmentamplitude, where s denotes the fraction of the path we are at. Of course, s is not the x value of the curve at that point, which would not be independent of the coordinate system. You could of course define your own function that returns the path length s (or fraction) a a function of x, which would work in this specific case because here it is single-valued but in general it is not. (I'm just back from cycling.... )

          – marmot
          Mar 17 at 18:37




          1




          1





          @AndiW Yes. What you are saying is correct, but is not contradicting with any of my statements, is it?

          – marmot
          Mar 17 at 20:21





          @AndiW Yes. What you are saying is correct, but is not contradicting with any of my statements, is it?

          – marmot
          Mar 17 at 20:21




          1




          1





          @marmot well - actually I sometimes forget that LaTeX is no low-level-end-user tool. Given the fact that it's a function controling the amplitude and not a graph (which would be something an end-user would expect) the answer is great. Having quit physics 25 yrs ago I have to change my approach I guess... :-) +1!

          – AndiW
          Mar 17 at 21:04





          @marmot well - actually I sometimes forget that LaTeX is no low-level-end-user tool. Given the fact that it's a function controling the amplitude and not a graph (which would be something an end-user would expect) the answer is great. Having quit physics 25 yrs ago I have to change my approach I guess... :-) +1!

          – AndiW
          Mar 17 at 21:04

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to TeX - LaTeX Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f479915%2ftikz-decoration-control-decoration-amplitude-along-curve%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Færeyskur hestur Heimild | Tengill | Tilvísanir | LeiðsagnarvalRossið - síða um færeyska hrossið á færeyskuGott ár hjá færeyska hestinum

          He _____ here since 1970 . Answer needed [closed]What does “since he was so high” mean?Meaning of “catch birds for”?How do I ensure “since” takes the meaning I want?“Who cares here” meaningWhat does “right round toward” mean?the time tense (had now been detected)What does the phrase “ring around the roses” mean here?Correct usage of “visited upon”Meaning of “foiled rail sabotage bid”It was the third time I had gone to Rome or It is the third time I had been to Rome

          Slayer Innehåll Historia | Stil, komposition och lyrik | Bandets betydelse och framgångar | Sidoprojekt och samarbeten | Kontroverser | Medlemmar | Utmärkelser och nomineringar | Turnéer och festivaler | Diskografi | Referenser | Externa länkar | Navigeringsmenywww.slayer.net”Metal Massacre vol. 1””Metal Massacre vol. 3””Metal Massacre Volume III””Show No Mercy””Haunting the Chapel””Live Undead””Hell Awaits””Reign in Blood””Reign in Blood””Gold & Platinum – Reign in Blood””Golden Gods Awards Winners”originalet”Kerrang! Hall Of Fame””Slayer Looks Back On 37-Year Career In New Video Series: Part Two””South of Heaven””Gold & Platinum – South of Heaven””Seasons in the Abyss””Gold & Platinum - Seasons in the Abyss””Divine Intervention””Divine Intervention - Release group by Slayer””Gold & Platinum - Divine Intervention””Live Intrusion””Undisputed Attitude””Abolish Government/Superficial Love””Release “Slatanic Slaughter: A Tribute to Slayer” by Various Artists””Diabolus in Musica””Soundtrack to the Apocalypse””God Hates Us All””Systematic - Relationships””War at the Warfield””Gold & Platinum - War at the Warfield””Soundtrack to the Apocalypse””Gold & Platinum - Still Reigning””Metallica, Slayer, Iron Mauden Among Winners At Metal Hammer Awards””Eternal Pyre””Eternal Pyre - Slayer release group””Eternal Pyre””Metal Storm Awards 2006””Kerrang! Hall Of Fame””Slayer Wins 'Best Metal' Grammy Award””Slayer Guitarist Jeff Hanneman Dies””Bullet-For My Valentine booed at Metal Hammer Golden Gods Awards””Unholy Aliance””The End Of Slayer?””Slayer: We Could Thrash Out Two More Albums If We're Fast Enough...””'The Unholy Alliance: Chapter III' UK Dates Added”originalet”Megadeth And Slayer To Co-Headline 'Canadian Carnage' Trek”originalet”World Painted Blood””Release “World Painted Blood” by Slayer””Metallica Heading To Cinemas””Slayer, Megadeth To Join Forces For 'European Carnage' Tour - Dec. 18, 2010”originalet”Slayer's Hanneman Contracts Acute Infection; Band To Bring In Guest Guitarist””Cannibal Corpse's Pat O'Brien Will Step In As Slayer's Guest Guitarist”originalet”Slayer’s Jeff Hanneman Dead at 49””Dave Lombardo Says He Made Only $67,000 In 2011 While Touring With Slayer””Slayer: We Do Not Agree With Dave Lombardo's Substance Or Timeline Of Events””Slayer Welcomes Drummer Paul Bostaph Back To The Fold””Slayer Hope to Unveil Never-Before-Heard Jeff Hanneman Material on Next Album””Slayer Debut New Song 'Implode' During Surprise Golden Gods Appearance””Release group Repentless by Slayer””Repentless - Slayer - Credits””Slayer””Metal Storm Awards 2015””Slayer - to release comic book "Repentless #1"””Slayer To Release 'Repentless' 6.66" Vinyl Box Set””BREAKING NEWS: Slayer Announce Farewell Tour””Slayer Recruit Lamb of God, Anthrax, Behemoth + Testament for Final Tour””Slayer lägger ner efter 37 år””Slayer Announces Second North American Leg Of 'Final' Tour””Final World Tour””Slayer Announces Final European Tour With Lamb of God, Anthrax And Obituary””Slayer To Tour Europe With Lamb of God, Anthrax And Obituary””Slayer To Play 'Last French Show Ever' At Next Year's Hellfst””Slayer's Final World Tour Will Extend Into 2019””Death Angel's Rob Cavestany On Slayer's 'Farewell' Tour: 'Some Of Us Could See This Coming'””Testament Has No Plans To Retire Anytime Soon, Says Chuck Billy””Anthrax's Scott Ian On Slayer's 'Farewell' Tour Plans: 'I Was Surprised And I Wasn't Surprised'””Slayer””Slayer's Morbid Schlock””Review/Rock; For Slayer, the Mania Is the Message””Slayer - Biography””Slayer - Reign In Blood”originalet”Dave Lombardo””An exclusive oral history of Slayer”originalet”Exclusive! Interview With Slayer Guitarist Jeff Hanneman”originalet”Thinking Out Loud: Slayer's Kerry King on hair metal, Satan and being polite””Slayer Lyrics””Slayer - Biography””Most influential artists for extreme metal music””Slayer - Reign in Blood””Slayer guitarist Jeff Hanneman dies aged 49””Slatanic Slaughter: A Tribute to Slayer””Gateway to Hell: A Tribute to Slayer””Covered In Blood””Slayer: The Origins of Thrash in San Francisco, CA.””Why They Rule - #6 Slayer”originalet”Guitar World's 100 Greatest Heavy Metal Guitarists Of All Time”originalet”The fans have spoken: Slayer comes out on top in readers' polls”originalet”Tribute to Jeff Hanneman (1964-2013)””Lamb Of God Frontman: We Sound Like A Slayer Rip-Off””BEHEMOTH Frontman Pays Tribute To SLAYER's JEFF HANNEMAN””Slayer, Hatebreed Doing Double Duty On This Year's Ozzfest””System of a Down””Lacuna Coil’s Andrea Ferro Talks Influences, Skateboarding, Band Origins + More””Slayer - Reign in Blood””Into The Lungs of Hell””Slayer rules - en utställning om fans””Slayer and Their Fans Slashed Through a No-Holds-Barred Night at Gas Monkey””Home””Slayer””Gold & Platinum - The Big 4 Live from Sofia, Bulgaria””Exclusive! Interview With Slayer Guitarist Kerry King””2008-02-23: Wiltern, Los Angeles, CA, USA””Slayer's Kerry King To Perform With Megadeth Tonight! - Oct. 21, 2010”originalet”Dave Lombardo - Biography”Slayer Case DismissedArkiveradUltimate Classic Rock: Slayer guitarist Jeff Hanneman dead at 49.”Slayer: "We could never do any thing like Some Kind Of Monster..."””Cannibal Corpse'S Pat O'Brien Will Step In As Slayer'S Guest Guitarist | The Official Slayer Site”originalet”Slayer Wins 'Best Metal' Grammy Award””Slayer Guitarist Jeff Hanneman Dies””Kerrang! Awards 2006 Blog: Kerrang! Hall Of Fame””Kerrang! Awards 2013: Kerrang! Legend”originalet”Metallica, Slayer, Iron Maien Among Winners At Metal Hammer Awards””Metal Hammer Golden Gods Awards””Bullet For My Valentine Booed At Metal Hammer Golden Gods Awards””Metal Storm Awards 2006””Metal Storm Awards 2015””Slayer's Concert History””Slayer - Relationships””Slayer - Releases”Slayers officiella webbplatsSlayer på MusicBrainzOfficiell webbplatsSlayerSlayerr1373445760000 0001 1540 47353068615-5086262726cb13906545x(data)6033143kn20030215029