TeX - LaTeX Asked by Tobard on January 5, 2021
Using TikZ, the shade
option is very convenient to produce color shadings, but it produces only linear color gradients. Is it possible to obtain other transitions, and especially a logarithmic one?
Thanks!
Here is an example for the linear case:
documentclass[border=5mm]{standalone}
usepackage{tikz}
begin{document}
begin{tikzpicture}
shade[left color=black, right color=white] (0,0) rectangle (10,1);
end{tikzpicture}
end{document}
Here are some examples.
documentclass{article}
usepackage[a3paper]{geometry}
usepackage{tikz}
begin{document}
begin{tikzpicture}
fill(-11,0)|-(0,-2)|-(11,2)|-cycle;
shade[left color=black,right color=white](-10,-1)rectangle(10,1);
end{tikzpicture}
pgfdeclarefunctionalshading{LBRW}{pgfpoint{0bp}{0bp}}{pgfpoint{100bp}{100bp}}{}{
pop 50 div .5 sub % u
dup dup % u u u
}
begin{tikzpicture}
fill(-11,0)|-(0,-2)|-(11,2)|-cycle;
shade[shading=LBRW](-10,-1)rectangle(10,1);
end{tikzpicture}
pgfdeclarefunctionalshading{dup mul LBRW}{pgfpoint{0bp}{0bp}}{pgfpoint{100bp}{100bp}}{}{
pop 50 div .5 sub % u
dup mul % u²
dup dup % u² u² u²
}
begin{tikzpicture}
fill(-11,0)|-(0,-2)|-(11,2)|-cycle;
shade[shading=dup mul LBRW](-10,-1)rectangle(10,1);
end{tikzpicture}
pgfdeclarefunctionalshading{sqrt LBRW}{pgfpoint{0bp}{0bp}}{pgfpoint{100bp}{100bp}}{}{
pop 50 div .5 sub % u
sqrt % √u
dup dup % √u √u √u
}
begin{tikzpicture}
fill(-11,0)|-(0,-2)|-(11,2)|-cycle;
shade[shading=sqrt LBRW](-10,-1)rectangle(10,1);
end{tikzpicture}
pgfdeclarefunctionalshading{1 add log LBRW}{pgfpoint{0bp}{0bp}}{pgfpoint{100bp}{100bp}}{}{
pop 50 div .5 sub % u
1 add log % ㏒(1+u)
dup dup % ㏒(1+u) ㏒(1+u) ㏒(1+u)
}
begin{tikzpicture}
fill(-11,0)|-(0,-2)|-(11,2)|-cycle;
shade[shading=1 add log LBRW](-10,-1)rectangle(10,1);
end{tikzpicture}
pgfdeclarefunctionalshading{9 mul 1 add log LBRW}{pgfpoint{0bp}{0bp}}{pgfpoint{100bp}{100bp}}{}{
pop 50 div .5 sub % u
9 mul 1 add log % ㏒(1+9u)
dup dup % ㏒(1+9u) ㏒(1+9u) ㏒(1+9u)
}
begin{tikzpicture}
fill(-11,0)|-(0,-2)|-(11,2)|-cycle;
shade[shading=9 mul 1 add log LBRW](-10,-1)rectangle(10,1);
end{tikzpicture}
pgfdeclarefunctionalshading{logistic}{pgfpoint{0bp}{0bp}}{pgfpoint{100bp}{100bp}}{}{
50 div .5 sub exch % v U
50 div .5 sub 4 mul exch % 4u v
dup 1 exch sub % 4u v 1-v
2 index % 4u v (1-v) 4u
mul mul % u 4uv(1-v)
dup 1 exch sub 2 index mul mul
dup 1 exch sub 2 index mul mul
dup 1 exch sub 2 index mul mul
dup 1 exch sub 2 index mul mul
dup 1 exch sub 2 index mul mul
exch pop dup dup
}
begin{tikzpicture}
fill(-11,0)|-(0,-2)|-(11,2)|-cycle;
shade[shading=logistic](-10,-1)rectangle(10,1);
end{tikzpicture}
end{document}
dup
duplicates the topmost element.dup dup
at every very end is actually unnecessary.pop
discards the topmost element.pop
at every very beginning throws away the y-coordinate, which is useless except the last case.pop
by swap
, you can leave the y-coordinate at the bottom alone. But then dup dup
becomes necessary.Correct answer by Symbol 1 on January 5, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP