Al intentar hacer una espiral de vectores (flecha giratoria en función de la posición x), encontré tikz para hacer un bucle adecuado. Con respecto a otras soluciones de bucle, tuve problemas para aplicar funciones más complicadas en el parámetro de bucle para calcular el ángulo de los vectores (el siguiente ejemplo solo usa sin
y cos
pero estoy usando, atan
etc.). En el siguiente paso quería colorear las flechas en función de un parámetro. Mi solución intermedia es deaquí. Lo que realmente quiero es definir el color rgb con alguna función compleja del parámetro de bucle. Como ejemplo que no funciona, algo como esto
%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)
}
Miré ejemplos más complejos comoÉste, pero no puedo encontrar la manera de adaptar esto a mi problema. ¿Hay alguna manera de implementar la idea del código anterior que no funciona para ejecutarlo en el siguiente ejemplo funcional?
(MikTeX 2.9 (32 bits) portátil, Win7 de 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}
Respuesta1
use la opción algebraica de coordenadas en 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}
Respuesta2
Gracias a la respuesta de Herbert, jugué un poco más con este problema. Debido a las llaves que usa en la opción algebraica de PSTricks, las probé en las definiciones de color. Esto ahora 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}
proporcionando esta salida
El único truco fueron, por lo tanto, las llaves en el nombre del color dentro del archivo \newrgbcolor
.
También tenga en cuenta que aquí no utilicé la opción algebraica de coordenadas en PSTricks. Cuando intenté calcular la coordenada dentro del argumento de posición de la función PSTricks correspondiente, primero me dio un resultado diferente. Creo que la razón es que las funciones trigonométricas tikz
toman ángeles en grados, mientras que las funciones trigonométricas dentro de la opción algebraica de coordenadas en PSTricks toman ángulos en radiante. Seguramente este es un cambio fácil, pero soy demasiado vago.