Archiv verlassen und diese Seite im Standarddesign anzeigen : tikz ursprüngliche linie zum Teil überzeichnen
Hallo,
ich möchte gerne die gestrichelte Linie mit mit einer durchgehenden Linie überzeichnen. Allerdings soll die durchgehenden Linie nur 80% der Länge der gestrichelten Linie überdecken (vom Ursprung aus gesehen). Die 80% sind aber nur ein fiktiver Wert, mir geht es mehr um das "wie geht das überhaupt". Gibt es da irgendeinen Befehl für so etwas?
VG
Fite
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{tikz,pgfplots}
\begin{document}
\begin{figure}[htbp]
\begin{tikzpicture}
% Koordinatensystem
\draw [->,>=latex,very thick] (-3,0)--(4,0) node[below left] {$\varepsilon$};
\draw [->,>=latex,very thick] (0,-4)--(0,4) node[below left] {$\sigma$};
% Linie
\path [draw, thick, dashed] (0,0) to[out=80,in=190] (4,3);
\end{tikzpicture}
\end{figure}
\end{document}
Stefan_K
21-10-2013, 17:07
Hallo Fite,
Du könntest die Linie nochmal genauso, jedoch mit der shorten-Option zeichnen, wie z.B. hier: Wie kann ich TikZ-Pfeile kürzer machen? (http://texwelt.de/wissen/fragen/825/wie-kann-ich-tikz-pfeile-kurzer-machen) Hinter dem Link, auf der Seite, gibt es auch TikZ-Experten, die Fragen beantworten - siehe TikZ-Fragenliste (http://texwelt.de/wissen/themen/tikz/) - alle beantwortet, m.W. alle gelöst.
Stefan
Vielen Dank! Der shorten-Befehl ist erst mal super. Allerdings legt er trotzdem (auch in dem Beispiel vom Link), die Pfeile oder Linien nicht exakt übereinander. Siehe hier:
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{tikz,pgfplots}
\begin{document}
\begin{figure}[htbp]
\begin{tikzpicture}
% Koordinatensystem
\draw [->,>=latex,very thick] (-3,0)--(4,0) node[below left] {$\varepsilon$};
\draw [->,>=latex,very thick] (0,-4)--(0,4) node[below left] {$\sigma$};
% Linie
\path [draw, thick, dashed] (0,0) to[out=80,in=190] (4,3);
\path [draw, thick, shorten >=1cm] (0,0) to[out=80,in=190] (4,3);
\end{tikzpicture}
\end{figure}
\end{document}
Gibts da noch nen Trick?
VG
Fite
Stefan_K
21-10-2013, 21:01
Hallo Fite,
das liegt m.E. daran, dass der gleiche Eingangswinkel mit in=190 verwendet wird. Wenn man die gebogene Linie verkürzt, dann ist am neuen Endpunkt der Winkel etwas anders. Ich wette, Qrrbrbirlbel (http://www.texwelt.de/wissen/benutzer/56/qrrbrbirlbel) weiß eine perfekte Lösung. Mir fiel bei der Frage das ähnliche Thema Kreisbogen zwischen zwei vorgegebenen Punkten (http://www.texwelt.de/wissen/fragen/1490/wie-kann-ich-mit-tikz-einen-kreisbogen-zwischen-zwei-punkten-zeichnen) ein, und wenn Du da seine tolle Lösung mit der super Erklärung siehst, verstehst Du was ich meine. :) Er kennt Vorhandenes und zaubert bei Bedarf einfach was Neues.
Stefan
Hier ist mal noch ein alternativer Vorschlag. Der leistet zwar das gewünschte, allerdings muss der Pfad für das Beschneiden mit \clip abhängig von der Kurve festgelegt werden:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
% Koordinatensystem
\draw [->,>=latex,very thick] (-3,0)--(4,0) node[below left] {$\varepsilon$};
\draw [->,>=latex,very thick] (0,-4)--(0,4) node[below left] {$\sigma$};
% Linie
\draw [thick, dashed] (0,0) to[out=80,in=190]coordinate[pos=0.8](C) (4,3);
\begin{scope}
\clip(0,0)rectangle(C);
\draw[thick] (0,0) to[out=80,in=190] (4,3);
\end{scope}
\end{tikzpicture}
\end{document}
Gruß
Elke
Stefan_K
22-10-2013, 16:30
Hallo Fite,
Elke hat das Problem freundlicherweise auf der TeXwelt (http://texwelt.de) gepostet, dort gibt es nun auch eine Lösung, bei der man die Kurve nur einmal angeben braucht und die Länge des durchgezogenen Teils mit übergibt: Teilweise gestrichelte Kurve (http://texwelt.de/wissen/fragen/2144/teilweise-gestrichelte-kurve).
Danke Elke!
Stefan
PS: Du verwendest pgfplots hier nicht, brauchst es also nicht zu laden. Wenn Du dennoch sehen möchtest, was das kann: pgfplots Beispiele (http://pgfplots.net).
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.