Re: Dimensione arrows in TikZ

#73608
Liverpool
Partecipante
    Up
    0
    Down
    ::


    Hai ragione. E’ colpa mia. La questione è che quando le linee sono inclinate, una parte delle estremità sporge orizzontalmente, perché lo spessore non è nullo e la lunghezza di linea è calcolata a metà spessore. TikZ, per unire i due tratti obliqui, li prolunga finché i bordi sporgenti della linea non si intersecano. Se alfa è l’inclinazione della linea, allora la parte prolungata sporgerà orizzontalmente di 0.5cosec(alfa)\pgflinewidth, che nel nostro caso è 1.30656297\pgflinewidth, che si può arrotondare un po’ date le modeste dimensioni dello spessore di linea. Così dovrebbe andare
    `
    \documentclass{article}
    \usepackage{tikz}

    % Codice per lo stile della freccia
    \pgfarrowsdeclare{freccia45}{freccia45}
    {
    \pgfarrowsleftextend{0pt}
    \pgfarrowsrightextend{\pgfgetarrowoptions{freccia45}+1.307\pgflinewidth}
    }
    {
    \pgfmathsetlengthmacro{\lun}{\pgfgetarrowoptions{freccia45}/cos(22.5)}
    \pgfsetdash{}{+0pt}
    \pgfsetmiterjoin
    \pgfpathmoveto{\pgfpointadd{\pgfqpoint{\pgfgetarrowoptions{freccia45}}{0pt}}{\pgfqpointpolar{157.5}{\lun}}}
    \pgfpathlineto{\pgfqpoint{\pgfgetarrowoptions{freccia45}}{0pt}}
    \pgfpathlineto{\pgfpointadd{\pgfqpoint{\pgfgetarrowoptions{freccia45}}{0pt}}{\pgfqpointpolar{-157.5}{\lun}}}
    \pgfpathclose
    \pgfusepathqstroke
    }
    \def\miodef{0.4cm} % imposta il valore utilizzato per default
    \pgfsetarrowoptions{freccia45}{\miodef} % valore utilizzato se /punta non viene invocato
    \pgfkeys{/punta/.default=\miodef, /punta/.code={\pgfsetarrowoptions{freccia45}{#1}}}

    \begin{document}
    \begin{tikzpicture}
    \draw [-freccia45, /punta=3pt] (0,3) — (3,3);
    \draw [-freccia45, /punta] (0,2) — (3,2);
    \draw [-freccia45, /punta=1cm] (0,1) — (3,1);
    \draw [-freccia45] (0,0) — (3,0);
    \draw (3,0) — (3,3);
    \end{tikzpicture}`

    Go to top