
tengo esta imagen...
Quiero replicar esto en LaTeX pero también tengo dimensiones en una de las ventanas. Algo como esto...
¿Cómo podría hacer esto usando TiKZ y al mismo tiempo mantener la sensación y la forma de un avión real como en la imagen, y agregar las dimensiones también?
La pregunta 'Dibujar un avión con Tikz' no responde a esta pregunta.
Respuesta1
Es muy fácil dibujar cosas así, simplemente tedioso. Para el futuro, le pediría amablemente que proporcione algún código que al menos defina los colores, establezca algunas dimensiones, etc., para que otros no tengan que empezar desde cero.
\documentclass[tikz,border=3mm]{standalone}
\definecolor{wt}{RGB}{210,215,219} % frame top
\definecolor{wb}{RGB}{151,154,162} % frame bottom
\definecolor{w}{RGB}{49,66,89} % window
\definecolor{pt}{RGB}{242,242,242} % plane top
\definecolor{pb}{RGB}{208,209,213} % plane bottom
\definecolor{wf}{RGB}{85,96,110} % inner frame
\definecolor{blind}{RGB}{115,119,128} % blind
\begin{document}
\begin{tikzpicture}[>=latex,pics/fuselage/.style={code={
\tikzset{fuselage/.cd,#1}%
\def\pv##1{\pgfkeysvalueof{/tikz/fuselage/##1}}%
\fill[w,rounded corners=\pv{r}-\pv{d}]
(-\pv{w}/2+\pv{d},-\pv{h}/2+\pv{d}) rectangle (\pv{w}/2-\pv{d},\pv{h}/2-\pv{d});
\clip [rounded corners=\pv{r}]
(-\pv{w}/2,-\pv{h}/2) rectangle (\pv{w}/2,\pv{h}/2);
\fill[blind] (-\pv{w}/2,\pv{h}/2-\pv{b}) rectangle (\pv{w}/2,\pv{h}/2);
\fill[wf,xshift=1.3pt,yshift=-1.3pt,even odd rule]
[rounded corners=\pv{r}]
(-\pv{w}/2,-\pv{h}/2) rectangle (\pv{w}/2,\pv{h}/2)
[rounded corners=\pv{r}-\pv{d}]
(-\pv{w}/2+\pv{d},-\pv{h}/2+\pv{d}) rectangle (\pv{w}/2-\pv{d},\pv{h}/2-\pv{d});
\draw[top color=wt,bottom color=wb,even odd rule]
[rounded corners=\pv{r}]
(-\pv{w}/2,-\pv{h}/2) rectangle (\pv{w}/2,\pv{h}/2)
[rounded corners=\pv{r}-\pv{d}]
(-\pv{w}/2+\pv{d},-\pv{h}/2+\pv{d}) rectangle (\pv{w}/2-\pv{d},\pv{h}/2-\pv{d});
}},fuselage/.cd,h/.initial=1.4cm,w/.initial=1cm,
d/.initial=0.7mm,r/.initial=4mm,b/.initial=2mm]
\path[top color=pt,bottom color=pb] (-4,-3) rectangle (4,3);
\path foreach \X in {0,...,3} {(-3+2*\X,0.5) pic{fuselage}};
\draw[|<->|] (1-0.425,0.5) -- (1+0.425,0.5) node[pos=0.75,above]{$a$};
\draw[|<->|] (1,0.5-0.625) -- (1,0.5+0.625) node[pos=0.75,left]{$b$};
\end{tikzpicture}
\end{document}
APÉNDICE: Por pedido una versión con pasajeros. (Estos no son necesariamente animales, entre los TikZlings, hay un muñeco de nieve y tres seres.)
\documentclass[tikz,border=3mm]{standalone}
\usepackage{tikzlings}
\definecolor{wt}{RGB}{210,215,219} % frame top
\definecolor{wb}{RGB}{151,154,162} % frame bottom
\definecolor{w}{RGB}{49,66,89} % window
\definecolor{pt}{RGB}{242,242,242} % plane top
\definecolor{pb}{RGB}{208,209,213} % plane bottom
\definecolor{wf}{RGB}{85,96,110} % inner frame
\definecolor{blind}{RGB}{115,119,128} % blind
\begin{document}
\begin{tikzpicture}[>=latex,pics/fuselage/.style={code={
\tikzset{fuselage/.cd,#1}%
\def\pv##1{\pgfkeysvalueof{/tikz/fuselage/##1}}%
\fill[w,rounded corners=\pv{r}-\pv{d}]
(-\pv{w}/2+\pv{d},-\pv{h}/2+\pv{d}) rectangle (\pv{w}/2-\pv{d},\pv{h}/2-\pv{d});
\clip [rounded corners=\pv{r}]
(-\pv{w}/2,-\pv{h}/2) rectangle (\pv{w}/2,\pv{h}/2);
\fill[blind] (-\pv{w}/2,\pv{h}/2-\pv{b}) rectangle (\pv{w}/2,\pv{h}/2);
\tikzling[scale=0.6,yshift=-2cm]
\fill[wf,xshift=1.3pt,yshift=-1.3pt,even odd rule]
[rounded corners=\pv{r}]
(-\pv{w}/2,-\pv{h}/2) rectangle (\pv{w}/2,\pv{h}/2)
[rounded corners=\pv{r}-\pv{d}]
(-\pv{w}/2+\pv{d},-\pv{h}/2+\pv{d}) rectangle (\pv{w}/2-\pv{d},\pv{h}/2-\pv{d});
\draw[top color=wt,bottom color=wb,even odd rule]
[rounded corners=\pv{r}]
(-\pv{w}/2,-\pv{h}/2) rectangle (\pv{w}/2,\pv{h}/2)
[rounded corners=\pv{r}-\pv{d}]
(-\pv{w}/2+\pv{d},-\pv{h}/2+\pv{d}) rectangle (\pv{w}/2-\pv{d},\pv{h}/2-\pv{d});
}},fuselage/.cd,h/.initial=1.4cm,w/.initial=1cm,
d/.initial=0.7mm,r/.initial=4mm,b/.initial=3mm]
\path[top color=pt,bottom color=pb] (-4,-3) rectangle (4,3);
\path foreach \X in {0,...,3} {(-3+2*\X,0.5) pic{fuselage}};
\end{tikzpicture}
\end{document}
Estos son Ti elegidos al azarkZlings, en cada compilación obtendrás un conjunto aleatorio. Si no te gusta esta aleatoriedad, utiliza \pgfmathsetseed{<int>}
donde int
es un número entero.