
Können Sie mir beim Zeichnen dieser Figur helfen?
Ich habe mehrere Autos mit diesem Code gezeichnet:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\tikzset{
pics/my car/.style={
code={
\tikzset{my car/.cd, #1}
\shade[my car/car color, shading angle={135},
draw=black, rounded corners=1.2ex, very thick]
(1.5,.5) -- ++(0,1) -- ++(1,0.3) -- ++(3,0) -- ++(1,0)
-- ++(0,-1.3) -- (1.5,.5) -- cycle;
\draw[very thick, rounded corners=0.5ex, fill=black!20!blue!20!white, thick]
(2.5,1.8) -- ++(1,0.7) -- ++(1.6,0) -- ++(0.6,-0.7) -- (2.5,1.8);
\draw[thick] (4.2,1.8) -- (4.2,2.5);
\draw[fill=gray!50, thick]
(2.75,.5) circle[radius=.5cm]
(5.5,.5) circle[radius=.5cm];
\draw[fill=gray!80, semithick]
(2.75,.5) circle[radius=.4cm]
(5.5,.5) circle[radius=.4cm];
\coordinate (-front) at (1.5,1);
\coordinate (-back) at (6.5,1);
\coordinate (-top) at (4.25,2.5);
\coordinate (-bottom) at (4.25,0);
}
},
my car/car color/.style={
top color=red, bottom color=white
}
}
\begin{document}
\begin{tikzpicture}
\pic (car 1) at (0,0) {my car};
\pic (car 2) at (10,0) {my car={car color/.append style={top color=blue}}};
\pic (car 3) at (20,0) {my car={car color/.append style={top color=green}}};
\pic (car 4) at (30,0) {my car={car color/.append style={top color=black}}};
%\draw[<-, shorten <=5pt, shorten >=5pt, ultra thick]
% (car 1-back) -- (car 2-front);
\draw[line width=5pt][<-, shorten <=5pt, shorten >=5pt]
(car 1-top) to[out=90, in=90] (car 2-top);
\draw[line width=5pt][<-, shorten <=5pt, shorten >=5pt]
(car 2-top) to[out=90, in=90] (car 3-top);
\draw[line width=5pt][<-, shorten <=5pt, shorten >=5pt]
(car 3-top) to[out=90, in=90] (car 4-top);
\end{tikzpicture}
\end{document}
Antwort1
Aktualisieren
Ich habe die Tikz-Ducks-Bibliothek verwendet, weil sie, wie Sie sehen werden, eine sehr malerische Vielfalt an Ergebnissen und Befehlen bietet, um diese zufällig zu erhalten. Wenn Sie sich die Dokumentation ansehen, werden Sie die ganze Mühe erkennen, die sich die Autoren bei der Erstellung all dessen gemacht haben. Vielleicht macht eines Tages jemand etwas Ähnliches mit Fahrzeugen und anderen Dingen und nur aus Liebe zu TeX oder was auch immer, aber hauptsächlich, um ein MWE zu erstellen, was bedeutet, dass Sie den Code kopieren, ihn in Ihren Compiler einfügen und wenn Sie alle Pakete haben, ja oder ja, erhalten Sie ein Ergebnis mit möglicherweise einigen Warnungen.
Natürlich ist es, wie FZH vorschlägt, einfacher, externe Dateien einzubinden, genau wie in dem von ihm angeführten Beispiel, aber damit alles gut aussieht, muss man bestimmte Details handhaben. Zunächst befinden sie sich in einem Knoten, und daher ist der Ankerpunkt wichtig. Dann müssen alle Bilder den gleichen Maßstab haben, damit Sie sie mit einer bestimmten Breite definieren können. Dafür empfiehlt es sich, im Internet nach kostenlosen Vektordateien zu suchen, diese in Inkscape zu bearbeiten, das Benötigte zu trennen, die Leinwand auf die minimale Vektorgröße zuzuschneiden und in PDF, PNG oder JPG zu exportieren. PDF ist besser, weil die Vektoren erhalten bleiben.
Um das Folgende zusammenzustellen, müssen Sie die 4 PDFs von diesem herunterladenVerknüpfung, CAR-1.pdf, CAR-2.pdf, .. usw. Es gibt noch mehr Dateien, aber sie sind frei verwendbar, da es sich um Kopien von Kopien handelt. Es gibt auch das Original-SVG, aus dem ich sie habe. Speichern Sie sie anschließend im selben Verzeichnis, in dem Sie Ihre Tex-Datei haben. Wie Sie sehen, können Sie sie mit dem jeweiligen Dateinamen durch alles ersetzen, was Sie möchten, damit der Compiler sie finden kann.
ERGEBNIS:
CODE: (zum Kompilieren benötigen Sie 4 externe Dateien im selben main.tex-Verzeichnis)
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,arrows.meta,backgrounds,decorations.markings}
\begin{document}
\begin{tikzpicture}[%Here you can define some tikz picture enviroment options
font=\sf\scriptsize,%set al fonts of this environment \sf=serif family, and size of text
Arrow/.style 2 args= {%Custom style arrow named Arrow, that has 2 arguments
draw=#1,%Option draw=color, #1 is the first argument
>={Triangle[angle=120:.5cm 0.3,scale length=0.5*#2,scale width=0.3*#2]},%It uses arrows meta arrow personalization, check visual tikz normal definition is ->
line width=#2*1.2mm
},
ArrowColor/.store in=\ArrowColor,ArrowColor=black,%Some variable to use in other styles below
ArCorr/.store in=\ArCorr,ArCorr=1.5, %Some variable to use in other styles below
Thickness/.store in=\Thickness,Thickness=4pt,%Some variable to use in other styles below
W/.store in=\W,W=5mm,%Some variable to use in other styles below
Arrow2/.style={%custom style arrow using decoratins markings.
draw=none,
postaction={
decorate,
decoration={
markings,
mark= at position 0 %this draw will be the first mark at the start of the path
with {%Mark drawing definition
\begin{scope}[yscale=#1]%All is in scope to mirror it using the default argument #1, using as Arrow2=-1 or 1
\pgfmathparse{int(\pgfdecoratedpathlength/4)}%Obtain the leght of the path
\edef\H{\pgfmathresult/15}%Then adjuts to mach the size of coordinates to the lenght of the path.
\fill[fill=\ArrowColor]
(0,0)
to [out=90-15, in=180] (\H,\W/1.5) coordinate (b)
-- ++(\Thickness,0) -- ++(0,-1pt)
to [out=180, in=90-15] (\Thickness,0)
-- (0,0);
\end{scope}
}
}
},
postaction={
decorate,
decoration={
markings,
mark=at position 1 %this draw will be the last mark at the end of the path
with {
\begin{scope}[yscale=#1]%idem
\pgfmathparse{int(\pgfdecoratedpathlength/4)}%idem
\edef\H{\pgfmathresult/15}%idem
\fill[fill=\ArrowColor]
(b) %uses previos coodinate to draw in the marck
to [out=0, in=90+20] (\Thickness/2,\Thickness*\ArCorr/1.5)
-- (\Thickness*\ArCorr,\Thickness*\ArCorr/1.5)
-- (0,0)
-- (-\Thickness*\ArCorr,\Thickness*\ArCorr/1.5)
-- (-\Thickness/2,\Thickness*\ArCorr/1.5)
to [out=90+20, in=0] ($(b)+(0,-1pt)$)
-- (b);
\end{scope}
}
}
}
}
]
%Creating a weel for all cars
\def\Weel#1{%\Weel{position}
\draw[fill=white,shift={(#1)}](0,0)circle (0.3);
\draw[fill=black!80, even odd rule,shift={(#1)}](0,0) circle (.3) circle (0.2);
\draw[fill,shift={(#1)}](0,0) circle (0.08);
\foreach \i in {1,...,12}{\draw[fill,shift={(#1)}](30*\i:0.1)--(30*\i:0.2)--+(90+30*\i:0.02);}
}
% drawing the Cars from external archives, you may include vectors (svg for example) if you convert them to pdf format.
\draw(0,0) node[anchor=-90](CAR-1){\includegraphics[width=3cm]{CAR-1.pdf}}; %\draw(position) node [node options](node_name){\includegraphics[graphic options]{imagefile}}
\draw($(CAR-1.-90)+(4.5,0)$) node[anchor=-90](CAR-2){\includegraphics[width=3cm]{CAR-2.pdf}};
\draw($(CAR-2.-90)+(4.5,0)$) node[anchor=-90](CAR-3){\includegraphics[width=3cm]{CAR-3.pdf}};
\draw($(CAR-3.-90)+(4.5,0)$) node[anchor=-90](CAR-4){\includegraphics[width=3cm]{CAR-4.pdf}};
\draw($(CAR-4.-90)+(3,0)$) node[scale=3]{$\dots$};
\draw($(CAR-4.-90)+(6,1)$) node[scale=2.5, draw, thick](L){\scriptsize Leader};
\Weel{$(L)+(-0.8,-0.7)$}
\Weel{$(L)+(0.8,-0.7)$}
\draw($(CAR-2)+(0,4)$) node[scale=2.5, draw, thick](C){\scriptsize Controller l};
%Drawing some Arrows
\draw[Arrow={cyan!40!blue}{1.2},->](CAR-1.120) |- ($(C)+(-1,2)$) -| (C.150);% |:vertical -:horizontal
\draw[Arrow={cyan!40!blue}{1.2},->](CAR-2.120) coordinate (temp) -- (C.-90-|temp);% node_coord intersectión perpendicular tipe (-| or |-)
\draw[Arrow={cyan!40!blue}{1.2},->]($(L.90)+(0,0.5em)$) |- ($(C)+(1,2)$) -| (C.120);
\draw[Arrow={cyan!40!blue}{1.2},->](CAR-4.120) |- ($(C)+(1,1.5)$) -| (C.60);
\draw[Arrow={cyan!40!blue}{1.2},->](CAR-3.120) |- ($(C)+(1,1)$) -| (C.30);
%Drawing some repetitive things
\foreach \txbehind/\Car [count=\j from 1]in {
i+1/CAR-1,
node\quad i/CAR-2,
i-1/CAR-3,
i-2/CAR-4,
0/L%<-necessary
}{
\path($(CAR-1.-90)+(0,-0.2)$)coordinate (temp) -- (temp-|\Car.-90) node []{$\txbehind$};
\ifnum\j<5\draw[Arrow={cyan!40!blue}{1},->]($(\Car.90)+(0,1)$) -- ++(0,-1)node [pos=0.1, anchor=-180]{$U_{\txbehind}$};\fi
\ifnum\j<4{}\draw[Arrow={red}{1},->](\Car.15) -- ++(0.75,0)node [midway, anchor=90]{$V_{\txbehind}$};\fi
}
\draw[Arrow2=-1,ArrowColor=black,Thickness=2mm,W=1.5cm,ArCorr=1.5] (CAR-2.140) -- (CAR-1.40);
\draw(b)++(0,0.7em) node {$\tilde{U}_{i+1}$}; %notice that b node is defined in the marking style
\draw[Arrow2=-1,ArrowColor=black,Thickness=2mm,W=1.5cm,ArCorr=1.5] (CAR-3.140) -- (CAR-2.40);
\draw(b)++(0,0.7em) node {$\tilde{U}_i$}; %the b position is rewritten by the previous instruction
\draw[Arrow2=-1,ArrowColor=black,Thickness=2mm,W=1.5cm,ArCorr=1.5] (CAR-4.140) -- (CAR-3.40);
\draw(b)++(0,0.7em) node {$\tilde{U}_{i-1}$};%ditto
\draw[dashed,green!50!black](CAR-2.south east)--++(0,-1) coordinate (temp1);
\draw[dashed,green!50!black](CAR-3.south west)--++(0,-1) coordinate (temp2);%
\draw[Arrow={green!50!black}{1},<->]($(temp1)+(0,1.5em)$)coordinate (temp) -- (temp -| temp2) node [midway, anchor=90]{$d_{i}$};
\end{tikzpicture}
\end{document}
Original
Nun, manchmal kommt es vor, dass man Leute sozial effektiver bewegen muss, damit sie nicht denken, dass es sich um einen typischen „Mach das für mich“-Fall handelt. Deshalb sollten Sie die Fragen auf bestimmte Fälle konzentrieren und versuchen, diese natürlich zu isolieren. Selbst wenn Sie also suchen, werden Sie Codestücke finden, die Sie anpassen können. Das ist zwar nicht so einfach, wenn Sie noch nicht viel verstehen, aber gut..., da ich die Codes dafür hatte, habe ich hier eine Lösung bereitgestellt, die zumindest das Problem mit den Pfeilen löst.
Blaue Pfeile von:So zeichnen Sie ein schönes und komplexes Flussdiagramm (Kombination aus Tabelle und Flussdiagramm)
schwarze gebogene Pfeile von:Pfeil zum Helix-Code hinzufügen
ERGEBNIS:
MWE:
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,arrows.meta,ducks,decorations.markings}
\begin{document}
\begin{tikzpicture}[
>=Triangle,
font=\sf\scriptsize,
Arrow/.style 2 args= {draw=#1,-{Triangle[angle=120:.5cm 0.3,scale length=0.5*#2,scale width=0.3*#2]},line width=#2*1.2mm},
CoilColor/.store in=\coilcolor,CoilColor=black,
ArCorr/.store in=\ArCorr,ArCorr=1.5,
Thickness/.store in=\Thickness,Thickness=4pt,
W/.store in=\W,W=5mm,
Arrow2/.style={
draw=none,
postaction={
decorate,
decoration={
markings,
mark= at position 0
with {
\begin{scope}[yscale=#1]
\pgfmathparse{int(\pgfdecoratedpathlength/4)}
\edef\H{\pgfmathresult/15}
\fill[fill=\coilcolor!50!black]
(0,0)
to [out=90-15, in=180] (\H,\W/1.5) coordinate (b)
-- ++(\Thickness,0) -- ++(0,-1pt) coordinate (c)
to [out=180, in=90-15] (\Thickness,0)
-- (0,0);
\end{scope}
}
}
},
postaction={
decorate,
decoration={
markings,
mark=at position 1
with {
\begin{scope}[yscale=#1]
\pgfmathparse{int(\pgfdecoratedpathlength/4)}
\edef\H{\pgfmathresult/15}
\fill[fill=\coilcolor]
(b)
to [out=0, in=90+20] (\Thickness/2,\Thickness*\ArCorr/1.5)
-- (\Thickness*\ArCorr,\Thickness*\ArCorr/1.5)
-- (0,0)
-- (-\Thickness*\ArCorr,\Thickness*\ArCorr/1.5)
-- (-\Thickness/2,\Thickness*\ArCorr/1.5)
to [out=90+20, in=0] ($(b)+(0,-1pt)$)
-- (b);
\end{scope}
}
}
}
}
]
%Creating a weel for all cars
\def\Weel#1{%\Weel{position}
\draw[fill=white,shift={(#1)}](0,0)circle (0.3);
\draw[fill=black!80, even odd rule,shift={(#1)}](0,0) circle (.3) circle (0.2);
\draw[fill,shift={(#1)}](0,0) circle (0.08);
\foreach \i in {1,...,12}{\draw[fill,shift={(#1)}](30*\i:0.1)--(30*\i:0.2)--+(90+30*\i:0.02);}
}
\def\DuckCar#1#2#3#4[#5]{ %\OrigCAr{position}{orientation~restrcited~values~1~or~-1}{rotation}{color}[ID]
\begin{scope}[shift={(#1)},xscale=#2,rotate=#3]
\draw(0,0) coordinate (#5);
\draw(0,2.2) node[minimum width=5em](#5-top){};%<--Added a point on top named nodename-top
\shuffleducks\duck[\randomhead,scale=0.8,xshift=-3em,yshift=0.5em];
\Weel{0.6,0.3}
\Weel{-0.6,0.3}
\ifnum#2=-1{\draw(0,0)++(0,2em)node[draw, rounded corners, rotate=-#3, font=\sf\tiny]{#5};}\fi
\ifnum#2=1{\draw(0,0)++(0,2em)node[draw, rounded corners, rotate=#3, font=\sf\tiny]{#5};}\fi
\end{scope}
}
% drawing the Cars
\DuckCar{0,0}{-1}{0}{}[CAR-1]
\DuckCar{$(CAR-1)+(4,0)$}{-1}{0}{}[CAR-2]
\DuckCar{$(CAR-2)+(4,0)$}{-1}{0}{}[CAR-3]
\DuckCar{$(CAR-3)+(4,0)$}{-1}{0}{}[CAR-4]
\draw($(CAR-4)+(3,0)$) node[scale=3]{$\dots$};
\draw($(CAR-4)+(6,1)$) node[scale=2.5, draw, thick](L){\scriptsize Leader};
\Weel{$(L)+(-0.8,-0.7)$}
\Weel{$(L)+(0.8,-0.7)$}
\draw($(CAR-2)+(0,4)$) node[scale=2.5, draw, thick](C){\scriptsize Controller l};
%Drawing some Arrows
\draw[Arrow={cyan!40!blue}{1.2}](CAR-1-top.150) |- ($(C)+(-1,2)$) -| (C.150);
\draw[Arrow={cyan!40!blue}{1.2}](CAR-2-top.150) coordinate (temp) -- (C.-90-|temp);
\draw[Arrow={cyan!40!blue}{1.2}]($(L.90)+(0,0.5em)$) |- ($(C)+(1,2)$) -| (C.120);
\draw[Arrow={cyan!40!blue}{1.2}](CAR-4-top.150) |- ($(C)+(1,1.5)$) -| (C.60);
\draw[Arrow={cyan!40!blue}{1.2}](CAR-3-top.150) |- ($(C)+(1,1)$) -| (C.30);
%Drawing some repetitive things
\foreach \txbehind/\Car [count=\j from 1]in {
i+1/CAR-1,
node\quad i/CAR-2,
i-1/CAR-3,
i-2/CAR-4,
0/L%
}{
\path($(CAR-1)+(0,-0.5)$)coordinate (temp) -- (temp-|\Car.-90) node []{$\txbehind$};
\ifnum\j<5\draw[Arrow={cyan!40!blue}{1}]($(\Car-top.30)+(0,1)$) -- ++(0,-1)node [midway, anchor=-180]{$U_{\txbehind}$};\fi
\ifnum\j<4{}\draw[Arrow={red}{1}]($(\Car)+(1.25,0.5)$) -- ++(0.75,0)node [midway, anchor=90]{$V_{\txbehind}$};\fi
}
\draw[Arrow2=-1,CoilColor=black,Thickness=2mm,W=1.5cm,ArCorr=1.5] ($(CAR-2)+(-0.4,1.5)$) -- ($(CAR-1)+(0.8,1.5)$);
\draw(b)++(0,0.7em) node {$\tilde{U}_{i+1}$};
\draw[Arrow2=-1,CoilColor=black,Thickness=2mm,W=1.5cm,ArCorr=1.5] ($(CAR-3)+(-0.4,1.5)$) -- ($(CAR-2)+(0.8,1.5)$);
\draw(b)++(0,0.7em) node {$\tilde{U}_i$};
\draw[Arrow2=-1,CoilColor=black,Thickness=2mm,W=1.5cm,ArCorr=1.5] ($(CAR-4)+(-0.4,1.5)$) -- ($(CAR-3)+(0.8,1.5)$);
\draw(b)++(0,0.7em) node {$\tilde{U}_{i-1}$};
\end{tikzpicture}
\end{document}