我正在寻找基于公式为矩形着色的 LaTeX 代码,该$(x,y)$
公式通过公式给出位置处的颜色$z=f(x,y)$
,其中$z$
是波长,我们希望$z$
在 处显示一个颜色点$(x,y)$
。
解释:
在相对论中,光的颜色受观察者、光源、反射器等的速度影响。例如,对于正常反射,可能存在以下关系: $\lambda_r=\frac{1-\beta}{1+\beta}} \lmbda_i$
其中$\lambda_i$
是入射波长,$\lambda_r$ 是反射波长,$\beta$
是范围内的某个分数速度$(-1,1)$
。这里的问题是如何用颜色绘制这个公式的图形。
例如,横轴可以显示光谱的可见部分$\lambda_i$
,纵轴可以显示$\beta$
,并且坐标处的每个点 $(\lambda_i,\beta)$
都可以用的颜色来着色$\lambda_r$
(对红外或紫外区域做了一些规定)。
答案1
该xcolor
软件包提供了一个wave
模型,允许您根据波长指定颜色。您需要完成\ComputeColor
您的目的,以根据 x 和 y 坐标返回范围为 [363,..,814] 的值。使用我的\ComputeColor
MWE 版本,如下所示:
代码:
\documentclass{article}
\usepackage{xcolor}
\usepackage{tikz}
\newcommand*{\DeltaX}{0.01}%
\newcommand*{\DeltaY}{0.01}%
\newcommand*{\XMin}{1}%
\newcommand*{\XMax}{3}%
\newcommand*{\YMin}{0}%
\newcommand*{\YMax}{1}%
\makeatletter
\pgfmathsetmacro{\XFirstStep}{\XMin+\DeltaX}%
\pgfmathsetmacro{\YFirstStep}{\YMin+\DeltaY}%
\def\@MinWavelength{363}% lambda in nm units
\def\@MaxWavelength{814}%
\def\XWeight{0.3}%
\def\YWeight{0.2}%
\newcommand{\ComputeColor}[3]{%
%% #1 = macro to contain color specification
%% #2 = x coordinate
%% #3 = y coordinate
\pgfmathtruncatemacro#1{%
(\@MaxWavelength-\@MinWavelength)
*(
\XWeight*(#2-\XMin)/(\XMax-\XMin)
+\YWeight*(#3-\YMin)/(\YMax-\YMin)
)
+\@MinWavelength
}%
}%
\makeatother
\begin{document}
\begin{tikzpicture}
%\draw [gray] (\XMin,\YMin) rectangle (\XMax, \YMax);
\foreach \x in {\XMin, \XFirstStep, ..., \XMax} {
\foreach \y in {\YMin, \YFirstStep, ..., \YMax} {
\ComputeColor{\CurrentColor}{\x}{\y}%
%\typeout{\x,\y: \color=\CurrentColor}%
\definecolor{MyColor}{wave}{\CurrentColor}
\fill [MyColor] (\x+0.5*\DeltaX,\y+0.5*\DeltaY) circle (\DeltaX);
}%
}
\end{tikzpicture}
\end{document}