TiKz e \pgfmathifthenelse

TiKz e \pgfmathifthenelse

Alguém sabe por que, com o código a seguir, minha linha azul não passa de (0,0) para (0,5,0)?

Para mim a abcissa 1 deveria ser multiplicada por 0,5, dada por \pgfmathresult, resultado da condição \pgfmathifthenelsemas não é o caso...

\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{positioning}
\usetikzlibrary{calc}

\newcommand{\origin}{
\node (O) at (0,0){$\times$};
\node at (1,0){$\times$};
\node at (O){O};}

\begin{document}
\begin{tikzpicture}
\origin
\pgfmathifthenelse{1}{"0.5*"}{}
\draw[blue] (0,0)--++(\pgfmathresult1,0);
\end{tikzpicture}
\end{document}

Responder1

Eu definitivamente ficaria longe desse uso, mas aqui o problema é que a \pgfmathresultdefinição não sobrevive por tanto tempo. Portanto, seu valor atual precisa ser usado rapidamente. Porque muitos comandos de desenho também o utilizam internamente.

\pgfmathsetmacro\mytemp{ifthenelse(1,"0.5*",)};
\draw[blue] (0,0)--++(\mytemp1,0);

funciona. Em vez disso, muito mais intuitivo e também sem qualquer código problemático de expansão é

\pgfmathsetmacro\mytemp{ifthenelse(1,0.5,1)};
\draw[blue] (0,0)--++(\mytemp*1,0);

Isso também equivale a

 \draw[blue] (0,0) --++({ifthenelse(1,0.5,1)*(1cm)},0);

insira a descrição da imagem aqui

informação relacionada