Hallo zusammen,

ich habe mit tikz die folgende Zeichnung erstellt:

Open in Online-Editor
\documentclass[a4paper]{article}

\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{arrows}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{arrows.meta}

\begin{document}
\tikzset{->-/.style={decoration={
  markings,
  mark=at position #1 with {\arrow{>[length=5pt,width=8pt]}}},postaction={decorate}}}
\begin{figure}[h!]
\centering
\begin{tikzpicture}
%Achsen zeichnen, Achtung: y-Achse verschoben!
\draw[->] (-2,0) -- (4,0) node[right]{$x$};
\draw[->] (-1,-1) -- (-1,4) node[above]{$y$};
%Lösungsbahn zeichnen
\draw[out=0,in=-70] (2,0) to (3,1);
\draw[->-=0.5,out=110, in=50] (3,1) to (1,3);
\draw[out=-130, in=110] (1,3) to (0.5,1.5);
\draw[out=-70,in=70] (0.5,1.5) to (0.75,0.75);
\draw[out=-120,in=180] (0.75,0.75) to (2,0);
\draw[fill] (2,0) circle(1pt) node[below]{$\gamma(0)$};
%Punkte einzeichnen
\draw[fill] (0.5,1.5) circle(1pt) node[left]{$\gamma(t)$};
\draw[fill] (3,1) circle(1pt) node[right]{$\gamma(s)$};
%Verbindungslinie
\draw[dashed] (3,1) -- (0.5,1.5);
\draw[->,thick] (3,1) -- +(-0.981,0.196);

\end{tikzpicture}
\caption{$-u(x_0)$ graphisch begründet}
%\label{fig:Winkel zwischen g und x-Achse}
\end{figure}

\end{document}

Die Kurve ist willkürlich ausgedacht, d.h. die Kurve bzw. die Punkte können bei Bedarf abgeändert werden, was ich aber gerne vermeiden würde, da ich in weiteren Zeichnungen diese Kurve schon verwendet habe und diese ungerne abändern und überarbeiten würde. Mathematisch soll es ein einfach geschlossener, glatter Weg sein der sich im ersten Quadranten befindet und die x-Achse an einem Punkt tangiert.

Die Punkte für die Verbindungslinie sind aus reiner Bequemlichkeit als Anschlusspunkte der Kurve gewählt, danach normiere ich (händisch berechnet) den Vektor der zwischen diesen beiden Punkten entstehen würde. Soweit zur aktuellen Fassung. Ich würde nun gerne die Punkte auf der Kurve links und rechts näher an den Punkt auf der x-Achse verschieben. Das habe ich mit Augenmaß soweit hinbekommen und zwei ungefähre Punkte einfach soweit jeweils verschoben bis es passend aussah.

Open in Online-Editor
\documentclass[a4paper]{article}

    \usepackage[english]{babel}
    \usepackage[utf8]{inputenc}
    \usepackage{tikz}
    \usetikzlibrary{arrows}
    \usetikzlibrary{decorations.markings}
    \usetikzlibrary{arrows.meta}

    \begin{document}
    \tikzset{->-/.style={decoration={
      markings,
      mark=at position #1 with {\arrow{>[length=5pt,width=8pt]}}},postaction={decorate}}}
    \begin{figure}[h!]
    \centering
    \begin{tikzpicture}
    %Achsen zeichnen, Achtung: y-Achse verschoben!
    \draw[->] (-2,0) -- (4,0) node[right]{$x$};
    \draw[->] (-1,-1) -- (-1,4) node[above]{$y$};
    %Lösungsbahn zeichnen
    \draw[out=0,in=-70] (2,0) to (3,1);
    \draw[->-=0.5,out=110, in=50] (3,1) to (1,3);
    \draw[out=-130, in=110] (1,3) to (0.5,1.5);
    \draw[out=-70,in=70] (0.5,1.5) to (0.75,0.75);
    \draw[out=-120,in=180] (0.75,0.75) to (2,0);
    \draw[fill] (2,0) circle(1pt) node[below]{$\gamma(0)$};
    %Punkte einzeichnen
    \draw[fill] (1.65,0.05) circle(1pt) node[left]{$\gamma(t)$};
    \draw[fill] (2.4,0.1) circle(1pt) node[right]{$\gamma(s)$};
    %Verbindungslinie
    \draw (2.4,0.1) -- (1.65,0.05);

    \end{tikzpicture}
    \caption{$-u(x_0)$ graphisch begründet}
    %\label{fig:Winkel zwischen g und x-Achse}
    \end{figure}

    \end{document}

Ich frage mich jetzt, ob das nicht auch genauer geht, d.h. ob man einen Punkt auf dem gezeichneten Kurvenstück draw[out=0,in=-70] (2,0) to (3,1); direkt ansteuern kann, um die Verbindungslinie einzuzeichnen. Falls das möglich ist, lässt sich auch direkt der normierte Vektor damit bestimmen ohne das händisch zu berechnen?

Ich hoffe mein Problem bzw. Anliegen ist verständlich, ansonsten versuche ich das noch genauer auszuführen!

gefragt 10 Jun '15, 08:36

Hirshy's gravatar image

Hirshy
306214
Akzeptiert: 85%

bearbeitet 07 Feb, 06:03

saputello's gravatar image

saputello
18.4k22352


Du kannst die intersections Bibliothek laden. Dann kannst Du Dir zwei beliebige Punkte etwas außerhalb der Kurve suchen und diese - ohne sie zu zeichnen - verbinden und die Verbindung benennen. Wenn Du auch der Kurve einen Namen gibst, kannst Du die Schnittpunkte ermitteln lassen, die dann definitiv auf der Kurve liegen. Ich habe dazu Deine Kurve in einem Zug gezeichnet, aber Du kannst auch für zwei einzelne Kurvenstücken machen.

Wenn Du dann noch einen Pfeil von 1cm Länge von dem einen Punkt zum anderen zeichnen möchtest, dann brauchst Du noch die calc Bibliothek und kannst dann einen "Distance Modifier" verwenden. Näheres dazu findest Du in der Doku von pgf/TikZ.

Open in Online-Editor
\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{intersections}
\usetikzlibrary{calc}

\begin{document}
\tikzset{
  ->-/.style={decoration={
    markings,
    mark=at position #1 with {\arrow{>[length=5pt,width=8pt]}}},postaction={decorate}},
  punkt/.style={circle,fill,inner sep=1pt}
}
\begin{tikzpicture}
%Achsen zeichnen, Achtung: y-Achse verschoben!
\draw[->] (-2,0) -- (4,0) node[right]{$x$};
\draw[->] (-1,-1) -- (-1,4) node[above]{$y$};
%Lösungsbahn zeichnen
\draw[name path=kurve] (2,0) 
  to [out=0,in=-70] (3,1)
  to [out=110, in=50] (1,3)
  to [out=-130, in=110](0.5,1.5)
  to [out=-70,in=70] (0.75,0.75)
  to [out=-120,in=180] (2,0) node[punkt,label=below:$\gamma(0)$]{}
;
%Markierung einzeichnen
\path[->-=0.5,out=110, in=50] (3,1) to (1,3);
%Gerade auf der die Punkte liegen
\path[name path=gerade,overlay](1,0.05)--(3,0.2);

\draw[dashed,name intersections={of=kurve and gerade,sort by=gerade}]
  (intersection-1) node[punkt,label={[xshift=-2mm]below:$\gamma(t)$}](gammat){}
  --(intersection-2) node[punkt,label={[xshift=2mm]below:$\gamma(s)$}](gammas){}
;
\draw[->](gammas)--($(gammas)!1cm!(gammat)$);
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 10 Jun '15, 10:33

esdd's gravatar image

esdd
14.2k53251

Also wieder die intersections bzw. calc-library...ich werde mich damit wohl doch demnächst näher befassen müssen. Danke!

(11 Jun '15, 18:05) Hirshy
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×492
×27
×4
×3
×3

Frage gestellt: 10 Jun '15, 08:36

Frage wurde angeschaut: 2,051 Mal

Zuletzt aktualisiert: 07 Feb, 06:03