pstricks com “colorfunction” em um loop tikz

pstricks com “colorfunction” em um loop tikz

Tentando fazer uma espiral de vetores (seta giratória em função da posição x), me deparei com o tikz para fazer um loop adequado. Em relação a outras soluções de loop tive problemas para aplicar funções mais complicadas no parâmetro de loop para calcular o ângulo dos vetores (o exemplo abaixo usa apenas sine cosmas estou usando atanetc.). Na próxima etapa eu queria colorir as setas em função de um parâmetro. Minha solução intermediária é deaqui. O que eu realmente quero é definir a cor rgb com alguma função complexa do parâmetro loop. Como um exemplo não funcional, algo como isto

%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)
}

Eu olhei para exemplos mais complexos comoEste, mas não consigo descobrir como adaptar isso ao meu problema. Existe uma maneira de implementar a ideia do código não funcional acima para ser executado no exemplo funcional abaixo?

(MikTeX 2.9 (32 bits) portátil, Win7 64 bits)

%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}

Responder1

use a opção algébrica de coordenadas no 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}

Responder2

Graças à resposta do Herbert, brinquei um pouco mais com esse problema. Devido aos colchetes que ele usa na opção algébrica do PSTricks, tentei aqueles nas definições de cores. Isso agora funciona.

\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} 

fornecendo esta saída insira a descrição da imagem aqui

O único truque foram, portanto, os colchetes no nome da cor dentro do arquivo \newrgbcolor.

Observe também que não usei a opção algébrica de coordenadas no PSTricks aqui. Quando tentei calcular a coordenada dentro do argumento de posição da função PSTricks correspondente, primeiro obtive um resultado diferente. A razão é, acredito, que as funções trigonométricas tikztomam anjos em graus, enquanto as funções trigonométricas dentro da opção algébrica de coordenadas no PSTricks tomam ângulos radiantes. Certamente, esta é uma mudança fácil, mas estou com preguiça.

informação relacionada