Re: Un disegno con TikZ

#83228
Up
0
Down
::


Ciao,

ecco la soluzione con misura della distanza. Nel preambolo inserisci questa macro:
`%Distanza fra due punti (la lunghezza viene espressa in punti, quindi usare \calcLV pt)
\makeatletter
\def\calcLV(#1,#2)#3{%
\pgfpointdiff{\pgfpointanchor{#1}{center}}%
{\pgfpointanchor{#2}{center}}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\FPeval\@temp@a{\pgfmath@tonumber{\pgf@xa}}%
\FPeval\@temp@b{\pgfmath@tonumber{\pgf@ya}}%
\FPeval\@temp@sum{(\@temp@a*\@temp@a+\@temp@b*\@temp@b)}%
\FProot{\FPMathLen}{\@temp@sum}{2}%
\FPround\FPMathLen\FPMathLen35\relax
\global\expandafter\edef\csname #3\endcsname{\FPMathLen}
}
\makeatother`
Fatto ciò, il disegno può essere fatto così:
`\begin{tikzpicture}[scale=1]
% definizioni
\def\lato{7} %pone il valore di lato a 7 (se non specificato è cm)
\pgfmathsetmacro{\raggio}{\lato/3.5} %calcola il valore del raggio a partire da quello del lato, ma può anche essere una costante
\def\alpha{60} %angolo tra i lati del triangolo

% coordinate
\coordinate [label=270:{ALIMENTAZIONE}] (bs) at (0,0); %punto in basso a sinistra del triangolo, ed etichetta
\coordinate [label=270:{RIPOSO}](bd) at ($(bs)+(0:\lato)$); %punto in basso a sinistra del triangolo, ed etichetta
\coordinate [label=90:{ALLENAMENTO}] (a) at ($(bs)+(\alpha:\lato)$); %punto in basso a sinistra del triangolo, ed etichetta
\coordinate (intBsA) at ($(bs)!.5!(a)$); %punto mediano fra (bs) e (a)

% centro
\path [name path=lineaUno] (bs) — ($(bs)+(\alpha/2:\lato)$); %definisce il percorso del segmento bisettore dell'angolo in basso a sinistra
\path [name path=lineaDue] (bd) — ($(bd)+(180-\alpha/2:\lato)$); %definisce il percorso del segmento bisettore dell'angolo in basso a destra
\path [name intersections={of=lineaUno and lineaDue, by=centro}]; %per intersezione determina il centro del triangolo

% calcolo raggio
\calcLV(intBsA,centro){dist} %calcola la distanza fra il centro e il mediano fra (bs) e (a)

% cerchio
\fill [blue!75] (centro) circle (\dist pt); %disegna il cerchio (si può anche usare shade, al posto di fill)
\node at (centro) {Risultati}; %etichetta del nodo al centro

% triangolo
\draw (bs) — (bd) — (a) — cycle; %disegna il triangolo

\end{tikzpicture}`
Tieni presente che la macro per il calcolo della misura della distanza fra due punti fornisce il risultato in pt, perciò nel raggio di [tt]circle[/tt] devi usare [tt]\dist pt.[/tt] A questo punto puoi scegliere se dare il valore manualmente attraverso [tt]\raggio,[/tt] oppure se farlo calcolare. L’ordine in cui disegni il cerchio e il triangolo è rilevante ai fini di ciò che viene disegnato “sotto” e ciò che viene disegnato “sopra”.

Ciao,
Marco.

Go to top