pstricks mit „colorfunction“ in einer Tikz-Schleife

pstricks mit „colorfunction“ in einer Tikz-Schleife

Beim Versuch, eine Spirale aus Vektoren zu erstellen (rotierender Pfeil als Funktion der X-Position), stieß ich auf Tikz, um eine richtige Schleife zu erstellen. Bei anderen Schleifenlösungen hatte ich Probleme, kompliziertere Funktionen auf den Schleifenparameter anzuwenden, um den Winkel der Vektoren zu berechnen (das folgende Beispiel verwendet nur sinund, cosaber ich verwende atanusw.). In einem nächsten Schritt wollte ich die Pfeile als Funktion eines Parameters einfärben. Meine Zwischenlösung ist vonHier. Was ich eigentlich möchte, ist, die RGB-Farbe mit einer komplexen Funktion des Loop-Parameters zu definieren. Als nicht funktionierendes Beispiel könnte so etwas wie das hier dienen

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

Ich habe mir komplexere Beispiele angesehen wieDieses hier, aber ich weiß nicht, wie ich das an mein Problem anpassen kann. Gibt es eine Möglichkeit, die Idee des oben nicht funktionierenden Codes so umzusetzen, dass sie im unten funktionierenden Beispiel ausgeführt wird?

(MikTeX 2.9 (32-Bit) Portable, Win7 64-Bit)

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

Antwort1

Verwenden Sie die algebraische Option der Koordinaten in 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}

Antwort2

Dank Herberts Antwort habe ich noch ein wenig mit diesem Problem herumgespielt. Aufgrund der Klammern, die er in der algebraischen Option von PSTricks verwendet, habe ich diese in den Farbdefinitionen ausprobiert. Das funktioniert jetzt.

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

Bereitstellung dieser Ausgabe Bildbeschreibung hier eingeben

Der einzige Trick waren daher die Klammern im Farbnamen innerhalb des \newrgbcolor.

Beachten Sie auch, dass ich hier nicht die algebraische Koordinatenoption in PSTricks verwendet habe. Als ich versuchte, die Koordinate innerhalb des Positionsarguments der entsprechenden PSTricks-Funktion zu berechnen, erhielt ich zunächst ein anderes Ergebnis. Der Grund dafür ist meiner Meinung nach, dass trigonometrische Funktionen tikzWinkel in Grad annehmen, während trigonometrische Funktionen innerhalb der algebraischen Koordinatenoption in PSTricks Winkel im Radiant annehmen. Dies ist sicherlich eine einfache Änderung, aber ich bin einfach zu faul.

verwandte Informationen