tikz 루프에 "colorfunction"이 포함된 pstricks

tikz 루프에 "colorfunction"이 포함된 pstricks

벡터의 나선형(x 위치의 함수로 화살표 회전)을 만들려고 할 때 적절한 루프를 만들기 위해 tikz를 발견했습니다. 다른 루프 솔루션과 관련하여 벡터의 각도를 계산하기 위해 루프 매개변수에 더 복잡한 함수를 적용하는 데 문제가 있었습니다(아래 예에서는 sin및 등을 사용하고 cos있지만 atan). 다음 단계에서는 매개변수의 함수로 화살표의 색상을 지정하고 싶었습니다. 내 중간 솔루션은 다음과 같습니다.여기. 내가 실제로 원하는 것은 루프 매개변수의 복잡한 기능을 사용하여 rgb-color를 정의하는 것입니다. 작동하지 않는 예로서 다음과 같습니다.

%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의 대수적 좌표 옵션 내의 삼각 함수는 복사 각도를 취하기 때문 이라고 생각합니다 . 확실히 이것은 쉬운 변화이지만 나는 너무 게으르다.

관련 정보