%20usando%20tikz.png)
Estou tentando desenhar algumas topologias de rede muito básicas e pensei em tentar usar o Tikz para isso.
Então pensei em começar e depois pedir ajuda, pois tenho que fazer 5 desses e não adianta fazer tudo ao contrário.
Aqui está meu MWE:
\documentclass[11pt,a4paper,oneside]{book}
\usepackage{tikz}
\begin{document}
\begin{center}
\def\a{.4}
\begin{figure}
\begin{tikzpicture}
\draw (2,-1) circle (\a cm);
\draw (2,-1) -- (2,0);
\draw (4,-1) circle (\a cm);
\draw (4,-1) -- (4,0);
\draw (1,1) circle (\a cm);
\draw (1,1) -- (1,0);
\draw (3,1) circle (\a cm);
\draw (3,1) -- (3,0);
\draw (5,1) circle (\a cm);
\draw (5,1) -- (5,0);
\draw (0,0) -- (6,0);
\end{tikzpicture}
\caption{Bus Network Topology}
\end{figure}
\end{center}
\end{document}
Então isso parece um pouco instável para começar, não é a centralização que eu esperava
Também coloca o desenho no next \section{}
, porque é um float e o LaTeX faz o que quiser com eles. Se houver alguma sugestão sobre como combater essa frouxidão, seria um craque. Acho que fiz um float usando begin{figure}
, mas queria legendar.
Seria bom adicionar um pouco de cor também, apenas 1 tom plano nas elipses (ocultaria as linhas de conexão)
Vou desenhar Malha, Árvore, Estrela, Anel e Ônibus conforme mostrado aqui.
De qualquer forma, obrigado!
Responder1
Aqui está uma maneira de desenhar a rede:
\documentclass[11pt,a4paper,oneside]{book}
\usepackage{tikz}
\begin{document}
\def\ab{.4}
\tikzset{
net node/.style = {circle, minimum width=2*\ab cm, inner sep=0pt, outer sep=0pt, ball color=blue!50!cyan},
net connect/.style = {line width=1pt, draw=blue!50!cyan!25!black},
net thick connect/.style = {net connect, line width=2.5pt},
}
\begin{figure}
\centering
\begin{tikzpicture}
\path [net thick connect]
(0,0) -- (6,0);
\foreach \i/\j in {2/-1,4/-1,1/1,3/1,5/1}
\path [net connect] (\i,0) -- (\i,\j) node [net node] {};
\end{tikzpicture}
\caption{Bus Network Topology}
\end{figure}
\end{document}
Observe que não faz sentido colocar figure
um center
ambiente. Em vez disso, use \centering
dentro figure
para centralizar o diagrama. Eu configurei alguns estilos para tornar mais fácil manter as coisas consistentes e alterar, digamos, a cor de todos os nós, se necessário. Também usei um loop para desenhar os nós.
Há muitas maneiras de fazer isso, mas esta deve ser bastante fácil de adaptar aos outros diagramas de rede, enquanto alguns dos outros métodos não seriam generalizáveis tão facilmente, eu acho.
Observe que \a
é um comando existente. Use \newcommand
em vez de \def
verificar esse tipo de problema. Eu substituí \ab
o que ainda não foi usado.
Para algumas redes, pode ser mais fácil usar coordenadas polares para especificar as localizações dos nós. Por exemplo, considere a estrela que é basicamente nós colocados em um círculo ao redor de um nó central:
Seria difícil calcular as posições dos nós no sistema usado acima, mas as coordenadas polares tornam o diagrama simples:
\newcommand*\ab{.4}
\tikzset{
net node/.style = {circle, minimum width=2*\ab cm, inner sep=0pt, outer sep=0pt, ball color=blue!50!cyan},
net root node/.style = {net node, minimum width=3*\ab cm},
net connect/.style = {line width=1pt, draw=blue!50!cyan!25!black},
}
\begin{figure}
\centering
\begin{tikzpicture}
\node (root) [net root node] {};
\foreach \i in {0,...,4}
\path [net connect] (root) -- (-90+\i*72:2) node [net node] {};
\end{tikzpicture}
\caption{Star Network Topology}
\end{figure}
O anel e a malha são muito semelhantes:
\begin{figure}
\centering
\begin{tikzpicture}
\foreach \i in {0,...,4}
\path (-90+\i*72:2) node (n\i) [net node] {};
\path [net connect] (n0) -- (n1) -- (n2) -- (n3) -- (n4) -- (n0);
\end{tikzpicture}
\caption{Ring Network Topology}
\end{figure}
\begin{figure}
\centering
\begin{tikzpicture}
\foreach \i in {0,...,4}
\path (-90+\i*72:2) node (n\i) [net node] {};
\foreach \i in {0,...,4}
\foreach \j in {0,...,4}
\path [net connect]
(n\i) -- (n\j);;
\end{tikzpicture}
\caption{Mesh Network Topology}
\end{figure}
Para a árvore, eu usaria desnecessariamente, forest
mas observe que isso é totalmente flagrante! Eu faria isso porque é uma árvore e forest
é fantástica - não porque um diagrama tão simples precise do poder de forest
....
\documentclass[11pt,a4paper,oneside]{book}
\usepackage{tikz,forest}
\begin{document}
\addtocounter{figure}{4}
\newcommand*\ab{.4}
\tikzset{
net node/.style = {circle, minimum width=2*\ab cm, inner sep=0pt, outer sep=0pt, ball color=blue!50!cyan},
net root node/.style = {net node, minimum width=3*\ab cm},
net connect/.style = {line width=1pt, draw=blue!50!cyan!25!black},
}
\begin{figure}
\centering
\begin{forest}
for tree={
edge=net connect,
if level=0{%
net root node,
before typesetting nodes={
repeat=2{
append={[,
net node,
repeat=3{
append={[, net node]},
},
]},
},
},
}{},
}
[]
\end{forest}
\caption{Tree Network Topology}
\end{figure}
\end{document}
O que eu gosto nisso, é claro, é que o que realmente desenha a árvore acaba sendo um único conjunto de colchetes!
O híbrido é mais complicado, pois há menos padrão. Trabalhei a partir do padrão de anel e adicionei os nós restantes manualmente, com a ajuda da calc
biblioteca do TikZ.
\usetikzlibrary{calc}
...
\begin{figure}
\centering
\begin{tikzpicture}
\foreach \i in {0,...,4}
\path (-90+\i*72:2) node (n\i) [net node] {};
\path [net connect]
(n0)
edge node [net node, pos=1] {} +(0,-15mm)
edge node [net node, pos=1] {} +(10mm,-15mm)
edge node [net node, pos=1] {} +(-10mm,-15mm)
-- (n1)
edge (n4)
edge (n3)
-- (n2)
-- (n3)
-- (n4)
-- (n0)
($(n2)!1/2!(n3)$) -- +(0,15mm) node [net node] {}
;
\end{tikzpicture}
\caption{Hybrid Network Topology}
\end{figure}