Animation Grafik

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


Sammy93
Forum-Anfänger
Forum-Anfänger
Beiträge: 16
Registriert: Do 25. Jun 2020, 10:27

Animation Grafik

Beitrag von Sammy93 »

Hallo,
ich habe eine Grafik erstellt und möchte nun den Punkt auf der Funktion wandern lassen. Leider fehlt mir bisher die Erfahrung mit Animationen.
Hier ist mein Minimalbeispiel:
\documentclass[10pt]{article}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{pgfplots}
\usepackage{tikz}
\usepackage{animate}

\begin{document}
\begin{tikzpicture}[scale=2]

\draw[loosely dotted] (0,0) grid (5,5);
\draw[->] (0,0) -- (5,0) node[right] {$x$};
\draw[->] (0,0) -- (0,5) node[above] {$y$};
\draw[thin,domain=0:5,smooth,variable=\x,black] plot(\x,{0.5*\x +1});
\coordinate[label=left:$A$] (A) at (2,2);
\fill[black] (A) circle (1pt);
\coordinate[label=left:$B$] (B) at (4,3);
\fill[black] (B) circle (1pt);
\path[fill=black!10] ++(2,2) --(4,2) --(4,3);
\end{tikzpicture}
\end{document}

Ich würde es gerne so machen, dass der Punkt B immer näher an den Punkt A wandert und somit die gefüllte Fläche immer kleiner wird. Ich habe mich schon informiert, dass man so etwas mit dem Paket Animate machen kann. Nur leider weiß ich nicht, wie ich es umsetzen soll. Es wäre toll, wenn mir jemand helfen könnte.
Vielen Dank.


Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Re: Animation Grafik

Beitrag von Bartman »

Wie mir scheint, macht man sich damit von gewissen PDF-Betrachtern abhängig. Das Beispiel funktioniert z. B. mit meinem verhältnismäßig aktuellen Adobe Reader.

Mein Vorschlag:

\documentclass{article}
% pgfplots lädt tikz, welches graphicx und xcolor lädt
\usepackage{tikz}
\usepackage{animate}

\usetikzlibrary{arrows.meta,backgrounds}

\begin{document}
\begin{animateinline}[controls]{1}
    \multiframe{10}{rd=0+0.2}{
    \begin{tikzpicture}[scale=2, >=Stealth]
        \draw[loosely dotted] (0,0) grid (5,5);
        \draw[<->] 
            (5,0) node[right] {$x$} -| (0,5) node[above] {$y$}
        ;
        \draw[domain=0:5] plot(\x,{0.5*\x+1});% Option variable ist unnötig
        \coordinate[label=above left:$A$] (A) at (2,2);
        \fill (A) circle (1pt);
        \scoped [on background layer] 
            \path [fill=black!10] 
                (A) -| (4-\rd,3-\rd*0.5) 
                    node [
                        fill=black, 
                        circle, 
                        inner sep=1.4pt,
                        label={[inner sep=1pt]above left:$B$}
                    ] {}
            ;
    \end{tikzpicture}}
\end{animateinline}
\end{document}

Sammy93
Forum-Anfänger
Forum-Anfänger
Beiträge: 16
Registriert: Do 25. Jun 2020, 10:27

Re: Animation Grafik

Beitrag von Sammy93 »

Wow, das ist echt klasse. Vielen vielen Dank. Genau so habe ich mir das vorgestellt. Eine Frage habe ich aber leider noch:

Wenn ich jetzt anstatt einer Geraden eine andere Funktion, beispielsweise eine E-Funktion oder Parabel habe, wie und wo müsste ich das in dem Code ändern, dass der Punkt auf dieser Funktion nach unten wandert? Ich habe gerade ausprobiert, die Funktion dann bei rd= einzusetzen, aber das ist wohl der falsche Ansatz.


markusv
Forum-Meister
Forum-Meister
Beiträge: 947
Registriert: Do 3. Sep 2015, 17:20
Wohnort: Leipzig

Re: Animation Grafik

Beitrag von markusv »

Sammy93 hat geschrieben:
Fr 26. Jun 2020, 08:45

Wenn ich jetzt anstatt einer Geraden eine andere Funktion, beispielsweise eine E-Funktion oder Parabel habe, wie und wo müsste ich das in dem Code ändern, dass der Punkt auf dieser Funktion nach unten wandert? Ich habe gerade ausprobiert, die Funktion dann bei rd= einzusetzen, aber das ist wohl der falsche Ansatz.

Die Funktion wird bei

plot(\x,{0.5*\x+1});

definiert, in diesem Falle f(x)=0,5x+1. Ggf. ist dann auch der Werte- und Definitionsbereich (Definitionsbereich per domain=0:5, Wertebereich bei grid) anzupassen. Entsprechend sind auch die Achsen anzupassen. Die Schritte sind in t -| (4-\rd,3-\rd*0.5)[/tt]anzupassen. Dort musst du jeweils die (x,y)-Kooridinate definieren. Im Beispiel von f(x)=x² wäre das (3-\rd,32-23\rd+\rd2), wenn man bei x=3 startet und schrittweise zurück gehen möchte. Am Beispiel für f(x)=x² von (1,1) bis (3,3):

\documentclass{standalone}
% pgfplots lädt tikz, welches graphicx und xcolor lädt
\usepackage{tikz}
\usepackage{animate}

\usetikzlibrary{arrows.meta,backgrounds}

\begin{document}
\begin{animateinline}[controls]{1}
    \multiframe{10}{rd=0+0.2}{
    \begin{tikzpicture}[scale=1, >=Stealth]
        \draw[loosely dotted] (0,0) grid (4,10);
        \draw[<->] 
            (4,0) node[right] {$x$} -| (0,10) node[above] {$y$}
        ;
        \draw[domain=0:3.15] plot(\x,{\x^2});% Option variable ist unnötig
        \coordinate[label=above left:$A$] (A) at (1,1);
        \fill (A) circle (1pt);
        \scoped [on background layer] 
            \path [fill=black!10] 
                (A) -| (3-\rd,3^2-2*3*\rd+\rd^2) 
                    node [
                        fill=black, 
                        circle, 
                        inner sep=1.4pt,
                        label={[inner sep=1pt]above left:$B$}
                    ] {}
            ;
    \end{tikzpicture}}
\end{animateinline}
\end{document}
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de

Sammy93
Forum-Anfänger
Forum-Anfänger
Beiträge: 16
Registriert: Do 25. Jun 2020, 10:27

Re: Animation Grafik

Beitrag von Sammy93 »

Ah ok, ich verstehe. Vielen Dank.
Das Einzige was mir nicht ganz klar ist, wie man auf die 23\rd +\rd2 im Code t[/tt] kommt.
Die erste 3 ist ja die x-Koordinate, \rd die zugehörige y-Koordinate ( nehme ich an). Also ich verstehe nicht so ganz, wie ich von der jeweiligen Funktion dann auf die jeweiligen Schritte in dieser Zeile komme.


markusv
Forum-Meister
Forum-Meister
Beiträge: 947
Registriert: Do 3. Sep 2015, 17:20
Wohnort: Leipzig

Re: Animation Grafik

Beitrag von markusv »

Sammy93 hat geschrieben:
Fr 26. Jun 2020, 11:33

Das Einzige was mir nicht ganz klar ist, wie man auf die 23\rd +\rd2 im Code t[/tt] kommt.

Das sind lediglich die zugehörigen y-Werte der jeweiligen x-Koordinate, die wir ja mittels (3-\rd) schrittweise in 0.2er-Schritten erzeugen. Die dazugehörigen y-Koordinaten sind bei f(x)=x² natürlich

 (3-\rd)² = 3² - 2*3*\rd + \rd² (binomische Formel).

Einfacher konnte ich es auf die Schnelle nicht eingeben.

Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de

Sammy93
Forum-Anfänger
Forum-Anfänger
Beiträge: 16
Registriert: Do 25. Jun 2020, 10:27

Re: Animation Grafik

Beitrag von Sammy93 »

Oh super, vielen Dank. Jetzt ist es klar!!! An meiner Grafik mit einer anderen Funktion klappt es auch. Du hast mir sehr geholfen.
Ich habe jetzt noch eine Gerade durch die zwei Punkte A und B eingebunden. Ist es möglich, dass diese mit dem Punkt B mitläuft, also dann auch immer kleiner wird?
\documentclass{article}
% pgfplots lädt tikz, welches graphicx und xcolor lädt
\usepackage{tikz}
\usepackage{animate}

\usetikzlibrary{arrows.meta,backgrounds}

\begin{document}
\begin{animateinline}[controls]{1}
\multiframe{10}{rd=0+0.2}{
\begin{tikzpicture}[scale=1, >=Stealth]
\draw[loosely dotted] (0,0) grid (4,10);
\draw[<->]
(4,0) node[right] {$x$} -| (0,10) node[above] {$y$}
;
\draw[domain=0:3.15] plot(\x,{\x2});% Option variable ist unnötig
\coordinate[label=above left:$A$] (A) at (1,1);
\fill (A) circle (1pt);
\draw[domain=1:3] plot(\x,{4\x-3}); %Gerade durch die Punkte A und B
\scoped [on background layer]
\path [fill=black!10]
(A) -| (3-\rd,32-23*\rd+\rd2)
node [
fill=black,
circle,
inner sep=1.4pt,
label={[inner sep=1pt]above left:$B$}
] {}
;
\end{tikzpicture}}
\end{animateinline}
\end{document}


Sammy93
Forum-Anfänger
Forum-Anfänger
Beiträge: 16
Registriert: Do 25. Jun 2020, 10:27

Re: Animation Grafik

Beitrag von Sammy93 »

Ist so etwas möglich umzusetzen?


Antworten