Пытаясь сделать спираль векторов (вращающаяся стрелка как функция x-позиции), я наткнулся на tikz для создания правильного цикла. Что касается других решений цикла, у меня возникли проблемы с применением более сложных функций к параметру цикла для вычисления угла векторов (пример ниже использует только sin
и , cos
но я использую 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-бит) Portable, 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 принимают углы в радиантах. Конечно, это легкое изменение, но мне просто лень.