tikz ループで「colorfunction」を使用する pstricks

tikz ループで「colorfunction」を使用する pstricks

ベクトルの螺旋(x位置の関数として矢印を回転させる)を作ろうとしたところ、適切なループを作成するためにtikzを見つけました。他のループソリューションに関しては、ベクトルの角度を計算するためにループパラメータにもっと複雑な関数を適用するのに問題がありました(以下の例ではとのみを使用していますがsincos私はatanなどを使用しています)。次のステップでは、パラメータの関数として矢印に色を付けたいと思いました。私の中間ソリューションは以下です。ここ私が実際に望んでいるのは、ループパラメータの複雑な関数を使ってRGBカラーを定義することです。動作しない例として、次のようなものがあります。

%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

Herbert の回答のおかげで、この問題をもう少し試してみました。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 の座標の代数オプション内の三角関数は角度を放射単位でとるからだと思います。確かにこれは簡単に変更できるのですが、私はあまりにも怠け者です。

関連情報