
У меня есть это изображение...
Я хочу повторить это в LaTeX, но также иметь размеры в одном из окон. Что-то вроде этого...
Как мне сделать это с помощью TiKZ, сохранив при этом ощущение и форму настоящего самолета, как на изображении, а также добавив размеры?
Задание «Нарисуй самолет с помощью Tikz» не дает ответа на этот вопрос.
решение1
Рисовать такие штуки очень легко, просто утомительно. На будущее я бы очень просил вас предоставить какой-нибудь код, который хотя бы определяет цвета, задает какие-то размеры и т. д., чтобы другим не пришлось начинать с нуля.
\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}
ПРИЛОЖЕНИЕ: По запросу возможна версия с пассажирами. (Это не обязательно животные, среди Tiк(Злингс там есть снеговик и три существа.)
\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}
Это случайно выбранные TiкZlings, в каждой компиляции вы получите случайный набор. Если вам не нравится эта случайность, используйте , \pgfmathsetseed{<int>}
где int
— целое число.