Código para mi intento

Código para mi intento

Estoy intentando dibujar el siguiente "diagrama de flujo".

ingrese la descripción de la imagen aquí

Después de jugar un poco, pude encontrar la siguiente solución.

ingrese la descripción de la imagen aquí

Lo que estoy luchando principalmente se reduce a dos cosas

  • ¿Cómo puedo alinear las flechas para que golpeen las cajas en ángulo recto? En este momento adiviné y calculé dónde colocarlos.
  • ¿Existe una manera fácil de obtener flechas gruesas como se muestra en la imagen?

Cualquier solución alternativa para obtener la imagen deseada será bienvenida como siempre.

Código para mi intento

\documentclass{article} 

\usepackage{xcolor}
\definecolor{UiT-main}{HTML}{003349}
\definecolor{UiT-red}{HTML}{CB333B}
\definecolor{UiT-blue}{HTML}{007396}
\definecolor{UiT-cyan}{HTML}{59BEC9}
\definecolor{UiT-orange}{HTML}{F2A900}

\usepackage{tikz}
\usetikzlibrary{shapes,arrows,calc}

% Define block styles
\tikzstyle{sun} = [circle,minimum height=0.6cm, draw, fill=UiT-orange, 
text width=4.5em, text badly centered, node distance=3cm, inner sep=0pt]
\tikzstyle{sunEmpty} = [circle,minimum height=0.6cm, 
text width=4.5em, text badly centered, node distance=3cm, inner sep=0pt]
\tikzstyle{block} = [rectangle, draw, fill=green!20, 
text width=20em, text centered, minimum height=4em]
\tikzstyle{line} = [draw, -latex']

\begin{document}

\begin{tikzpicture}[node distance = 2cm, auto]
% Place nodes
\node [sun] (Sun) {Sun};
\node [sunEmpty,right of=Sun] (SunEmpty) {};
\node [block, right of=Sun, yshift=-2cm] (greenhouse) {Greenhouse layer};
\node [block, fill=black!20, below of=greenhouse, yshift=-2cm] (surface) {surface};
% Draw edges  
\path [line] (Sun) -- node {}($(surface.north west)!0.23!(surface.north east)$);
\path [line,shorten <=0.25cm,shorten >=0.25cm] (surface) -- node {}(greenhouse);
\path [line] ($(greenhouse.north west)!0.64!(greenhouse.north east)$) -- node {}(SunEmpty.north);
\end{tikzpicture}
\end{document}

Respuesta1

¿Cómo puedo alinear las flechas para que golpeen las cajas en ángulo recto? En este momento adiviné y calculé dónde colocarlos.

La coordenada (surface.north-|sun)tendrá un valor de coordenada x de suny un valor de coordenada y de surface.north. Entonces, lo pathsiguiente golpeará el cuadro ( surface) en ángulo recto.

\path (Sun) -- (surface.north-|Sun);

¿Existe una manera fácil de obtener flechas gruesas como se muestra en la imagen?

Aumentar line width.

Además, ajusté el outer sepof nodes para que las flechas no toquen los nodos. ingrese la descripción de la imagen aquí

MWE

\documentclass[margin=3mm]{standalone} 
\usepackage{xcolor}
\usepackage{tikz}
\definecolor{UiT-main}{HTML}{003349}
\definecolor{UiT-red}{HTML}{CB333B}
\definecolor{UiT-blue}{HTML}{007396}
\definecolor{UiT-cyan}{HTML}{59BEC9}
\definecolor{UiT-orange}{HTML}{F2A900}

% Define block styles
\tikzset{sunEmpty/.style={circle,minimum height=0.6cm, 
text width=4.5em, text badly centered, node distance=3cm, inner sep=0pt, outer sep=1mm},
sun/.style={sunEmpty,draw,fill=UiT-orange},
block/.style={rectangle, draw, fill=green!20,
text width=20em, text centered, minimum height=4em, outer sep=1mm},
line/.style={-latex, line width=1.8mm, draw=blue!40}}

\begin{document}
\begin{tikzpicture}[node distance = 2cm, auto]
% Place nodes
\node [sun] (Sun) {Sun};
\node [sunEmpty,right of=Sun] (SunEmpty) {};
\node [block, right of=Sun, yshift=-2cm] (greenhouse) {Greenhouse layer};
\node [block, fill=black!20, below of=greenhouse, yshift=-2cm] (surface) {surface};
% Draw edges  
\path [line,UiT-orange] (Sun) -- (surface.north-|Sun);
\path [line] (surface) -- (greenhouse);
\path [line] (greenhouse.north-|SunEmpty) -- (SunEmpty.north);
\end{tikzpicture}
\end{document}

EDITAR: una versión mejor (gracias ausuario121799)

\documentclass[margin=3mm,tikz]{standalone} 
\usetikzlibrary{shapes.arrows,calc,shadows.blur,positioning}
\definecolor{UiT-main}{HTML}{003349}
\definecolor{UiT-red}{HTML}{CB333B}
\definecolor{UiT-blue}{HTML}{007396}
\definecolor{UiT-cyan}{HTML}{59BEC9}
\definecolor{UiT-orange}{HTML}{F2A900}

% Define block styles
\tikzset{sun/.style={circle,minimum height=0.6cm, draw, fill=UiT-orange, 
text width=4.5em, text badly centered, node distance=3cm, inner sep=0pt, outer
sep=1mm},
sunEmpty/.style={circle,minimum height=0.6cm, 
text width=4.5em, text badly centered, node distance=3cm, inner sep=0pt, outer
sep=1mm},
block/.style={rectangle, draw, fill=green!20, 
text width=20em, text centered, minimum height=4em, outer sep=1mm},
line/.style={-latex, double arrow, line width=1.8mm, draw=blue!40}}

\begin{document}
\begin{tikzpicture}[node distance = 2cm, auto,
  fat arrow/.style={% https://tex.stackexchange.com/a/432147/121799
      to path={
        let \p1 = ($(\tikztotarget)-(\tikztostart)$),
            \n1 = {int(mod(scalar(atan2(\y1,\x1))+360, 360))}, % calculate angle in range [0,360)
            \n2 = {veclen(\x1,\y1)}
        in
        -- (\tikztotarget)
        node[inner xsep=0pt,inner ysep=5pt, % use inner ysep to set width
             minimum height=\n2-\pgflinewidth,
             single arrow,midway,sloped,anchor=center,
             #1          % arguments passed to fat arrow added here
             ] {} \tikztonodes}
  },
  fat arrow/.default=, % empty default for argument of fat arrow
  pft/.style={single arrow,draw=blue,blur
shadow,xshift=-2pt,minimum width=10mm, single arrow head extend=.2cm }
]
% Place nodes
\node [sun,blur shadow] (Sun) {Sun};
\node [sunEmpty,right=2.2cm of Sun] (SunEmpty) {};
\node [block, right of=Sun, yshift=-2cm,blur shadow,rounded corners=2pt] (greenhouse) {Greenhouse layer};
\node [block, fill=black!20, below of=greenhouse, yshift=-2cm,blur shadow,rounded corners=2pt] (surface) {surface};
% Draw edges  
\path [fat arrow={pft,top color=UiT-orange!80,bottom color=UiT-orange}]
(Sun.south) to (surface.north-|Sun) ;
\path [fat arrow={pft,top color=blue!20,bottom color=blue!40}]
(surface.north) to (greenhouse.south);
\path [fat arrow={pft,top color=blue!20,bottom color=blue!40,minimum width=5mm}]
(greenhouse.north-|SunEmpty) to (SunEmpty.north);
\path [fat arrow={pft,top color=blue!20,bottom color=blue!40,minimum width=5mm}]
(greenhouse.south-|SunEmpty) to (surface.north-|SunEmpty);
\end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada