tikz 循環中帶有「colorfunction」的 pstricks

tikz 循環中帶有「colorfunction」的 pstricks

嘗試製作螺旋向量(旋轉箭頭作為 x 位置的函數),我遇到了 tikz 來製作適當的循環。關於其他循環解決方案,我在循環參數上應用更複雜的函數來計算向量的角度時遇到問題(下面的範例僅使用sinandcos但我正在使用atan等)。在下一步中,我想根據參數對箭頭進行著色。我的中間解決方案來自這裡。我真正想要的是用循環參數的一些複雜函數來定義 rgb-color 。作為一個非工作的例子,像這樣

%NON WORKING "WISHLIST"  
\foreach \x in {-15,...,15} {
    \pgfmathsetmacro\myRed{\x + 0.5*sin(\x)}
    \pgfmathsetmacro\myGreen{\x - 0.5*cos(\x)}
    \pgfmathsetmacro\myBlue{\x - 0.5*atan(\x)}
    \newrgbcolor{varCol}{\myRed \myGreen \myBlue}
    \psline[linecolor=varCol]{->}(\xx,0)(0,\xx)
}

我查看了更複雜的例子,例如這個,但我不知道如何使其適應我的問題。有沒有辦法實現上述非工作程式碼在下面的工作範例中運行的想法?

(MikTeX 2.9(32 位元)便攜式,Win7 64 位元)

%NOT SATISFYING WORKAROUND FOR THE MOMENT
\documentclass[]{scrartcl}%{article}
%\usepackage[usenames]{color}
\usepackage{xcolor}
\usepackage{tikz}
\usepackage{pstricks}
\pagestyle{empty}

\begin{document}
\begin{center}
\begin{pspicture}(-8,0)(8.0,10)

\foreach \x in {-15,...,15} {
    \pgfmathsetmacro\angle{\x*\x*\x/125 * 25.01}
    \pgfmathsetmacro\xx{\x + 0.5*sin(\angle)}
    \pgfmathsetmacro\XX{\x - 0.5*sin(\angle)}
    \pgfmathsetmacro\yy{6+0.5*cos(\angle)}
    \pgfmathsetmacro\YY{6-0.5*cos(\angle)}

    %\pgfmathsetmacro\myRed{0.5-0.1*cos(\angle)}
    %\newrgbcolor{rgb}{varCol}{0,.5,0}
    %\newrgbcolor{varCol}{.1 \myRed 0}

    %\definecolor{\abcdefg}{rgb}{.2,.3,.4}
    \pgfmathsetmacro\myMix{50-50*sin(\angle)}
    \psline[linecolor={red!\myMix!green}, linewidth=2pt]{->}(\xx,\yy)(\XX,\YY)
}   
\end{pspicture} 
\end{center}
\end{document}

答案1

在 PSTricks 中使用座標的代數選項:

\documentclass[pstricks]{standalone}
\usepackage{pstricks}

\begin{document}

\begin{pspicture}(-16,5)(8.0,7)
\pgfforeach \x in {-15,...,15} {%
    \pgfmathsetmacro\angle{\x*\x*\x/125 * 25.01}
    \pgfmathsetmacro\myMix{50-50*sin(\angle)}
    \psline[linecolor={red!\myMix!green}, linewidth=2pt]{->}%
      (+{\x+sin(\angle)/2, 6+cos(\angle)/2})%
      (+{\x-sin(\angle)/2, 6-cos(\angle)/2})
}   
\end{pspicture} 

\end{document}

答案2

感謝赫伯特的回答,我對這個問題有了更多的了解。由於他在 PSTricks 的代數選項中使用了大括號,我在顏色定義中嘗試了這些。現在這有效了。

\documentclass[]{scrartcl}
\usepackage{xcolor}
\usepackage{tikz}
\usepackage{pstricks}

\pagestyle{empty}
\begin{document}
\begin{center}
\begin{pspicture}(-8,0)(8.0,10)
\foreach \x in {-9,...,9} {
    \pgfmathsetmacro\angle{\x*\x*\x/125 * 25.01}
    \pgfmathsetmacro\xx{.8*\x + 0.5*sin(\angle)}
    \pgfmathsetmacro\XX{.8*\x - 0.5*sin(\angle)}
    \pgfmathsetmacro\yy{6+0.5*cos(\angle)}
    \pgfmathsetmacro\YY{6-0.5*cos(\angle)}

    \pgfmathsetmacro\myRed{ (1 - cos(\angle/2-45 )^2  )^2 }
    \pgfmathsetmacro\myGreen{ (1 - cos(\angle/2+45 )^2 )^2 }
    \pgfmathsetmacro\myBlue{ (cos(\angle/2 )^2 )^2 }
    \newrgbcolor{varCol}{{\myRed} {\myGreen} {\myBlue}}

    \psline[linecolor=varCol, linewidth=2pt]{->}(\xx,\yy)(\XX,\YY)
}   
\end{pspicture} 
\end{center}
\end{document} 

提供此輸出 在此輸入影像描述

因此,唯一的技巧是在\newrgbcolor.

另請注意,我在這裡沒有使用 PSTricks 中座標的代數選項。當我嘗試計算對應 PSTricks 函數的位置參數內的座標時,它首先給出了不同的結果。我認為,原因是三角函數tikz以度為單位,而 PSTricks 中座標代數選項中的三角函數以輻射角為單位。當然,這是一個簡單的改變,但我太懶了。

相關內容