使用 TikZ,该shade
选项非常方便生成颜色阴影,但它只产生线性颜色渐变。是否可以获得其他过渡,尤其是对数过渡?
谢谢!
编辑:
以下是线性情况的一个例子:
\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}
答案1
这里有些例子。
- R=G=B=x(你的 MWE)
- R=G=B=x
- R=G=B=x²
- R=G=B=√x
- R=G=B=log(1+x)
- R=G=B=log(1+9x)
- 红=绿=蓝=...出色地 ...
\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
复制最顶部的元素。- 每一个末端
dup dup
其实都是不必要的。 - 如果在堆栈中只留下一个数字,PDF 渲染器将把它视为灰度。
- 如果有三个,则分别是R,G,B。
- 如果有 0 或 2 或 4、5、6...... 我就不知道了。
pop
丢弃最顶层元素。- 每次
pop
一开始都会丢弃 y 坐标,除了最后一种情况外,它是无用的。 pop
用替换swap
,您可以保留底部的 y 坐标。但随后dup dup
就变得必要了。- 有关详细信息,请参阅 Ti钾Z 手册IX.110.2.3 一般(功能)阴影。
- 欲了解更多信息,请参阅 PDF 手册8.7.4.5.2 类型 1(基于功能)阴影。
- 也可以看看附件 B(规范性)第 4 类函数中的运算符。