\documentclass[]{scrartcl} \usepackage{tikz} \usetikzlibrary{calc} \newcommand\Punkt{\tikz[scale=0.07]\draw[thick](-1,-1)--(1,1)(-1,1)--(1,-1);} \begin{document} \begin{tikzpicture} \draw (0,0)--(3.9,0); \node at (2.2,1.5) (P) {\Punkt}; \node[scale=0.9] at (2.2,1.5) [anchor=south west] {$P$}; \node at (0.1,-0.2) {$g$}; \draw (P) circle (1.8cm) node (C){}; \end{tikzpicture} \end{document}
Schnittpunkt Kreis und Gerade bei tikz
-
- Forum-Fortgeschrittener
- Beiträge: 59
- Registriert: Mo 22. Aug 2011, 14:50
Schnittpunkt Kreis und Gerade bei tikz
Folgender Code:
Kann mir jemand sagen, wie ich es hinbekomme, die Schnittpunkte zu markieren und am besten nur in diesem Bereich einen Ausschnitt des Kreisbogens anzuzeigen?
Madridista till I die!
-
- Forum-Fortgeschrittener
- Beiträge: 59
- Registriert: Mo 22. Aug 2011, 14:50
Erst einmal vielen Dank für die Tipps, ich hatte vorher schon in die Anleitung geschaut, aber auf Grund ihres Umfanges, ist es schwer, dass zu finden, was man braucht. Die Stichworte haben mir sehr geholfen. Was ich aber absolut nicht hin bekomme ist es den Schnittpunkt zu bestimmen bzw. zu extrahieren. Mein Code sieht jetzt so aus:
Am liebsten wäre es mir, wenn man die Schnittpunkte direkt mit einem Buchstaben bezeichnet könnte, den ich dann weiter benutzen kann.
\documentclass[]{scrartcl} \usepackage{tikz} \usetikzlibrary{calc} \usetikzlibrary{intersections} \newcommand\Punkt{\tikz[scale=0.07]\draw[thick](-1,-1)--(1,1)(-1,1)--(1,-1);} \begin{document} \begin{tikzpicture} \draw (0,0)--(3.9,0); \node at (2.2,1.5) (P) {\Punkt}; \node[scale=0.9] at (2.2,1.5) [anchor=south west] {$P$}; \node at (0.1,-0.2) {$g$}; \pgfintersectionofpaths %Dabei, weil ich hoffte, damit die Schnittpunkte extrahieren zu können. {\pgfpathcircle{\pgfpoint{2.2cm}{1.5cm}}{1.8cm}} {{\pgfpointxy{0}{0}}{\pgfpointxy{3.9cm}{0}}} \begin{scope} \clip (0,-0.1) rectangle (3.9,0.1); \draw (P) circle (1.8cm) node (C){}; \end{scope} \end{tikzpicture} \end{document}
Madridista till I die!
-
- Forum-Fortgeschrittener
- Beiträge: 59
- Registriert: Mo 22. Aug 2011, 14:50
So jetzt habe ich es hinbekommen, habe es wie folgt gelöst:
Einzige Frage die jetzt noch bleibt ist, geht dass noch schöner, bzw. habe ich grobe Anfängerfehler dabei, die im weiteren Verlauf zu größeren Fehlern führen können?
Und hätte man das auch irgendwie mit dem pgfintersection of paths eleganter lösen können?
\documentclass[]{scrartcl} \usepackage{tikz} \usetikzlibrary{calc} \usetikzlibrary{intersections} \newcommand\Punkt{\tikz[scale=0.07]\draw[thick](-1,-1)--(1,1)(-1,1)--(1,-1);} \begin{document} \begin{tikzpicture} \draw[name path=a--b] (0,0)--(3.9,0); \node at (2.2,1.5) (P) {\Punkt}; \node[scale=0.9] at (2.2,1.5) [anchor=south west] {$P$}; \node at (0.1,-0.2) {$g$}; % \pgfintersectionofpaths % {\pgfpathcircle{\pgfpoint{2.2cm}{1.5cm}}{1.8cm}} % {{\pgfpointxy{0}{0}}{\pgfpointxy{3.9cm}{0}}} \begin{scope} \clip (0,-0.1) rectangle (3.9,0.1); \draw (P) circle (1.8cm); \end{scope} \path [name path=c] (P) circle (1.8cm);%Bei dem Befehl darüber erkennt er dann nicht, was "c" ist \path [name intersections={of=a--b and c}]; \coordinate [label=below:$A$] (A) at (intersection-1); \coordinate [label=below:$B$] (B) at (intersection-2); % \path [name intersections={of=a--b and c, by={[label=below:$A$] (A), [label=below:$B$] (B)}}]; hier hat er Probleme mit den Buchstaben in den runden Klammern, keine Ahnung warum. Die log fragt, ob nicht ein Semikolon fehlt, wüsste aber nicht wo. \end{tikzpicture} \end{document}
Und hätte man das auch irgendwie mit dem pgfintersection of paths eleganter lösen können?
Madridista till I die!
Nabend 
Entschuldige bitte die etwas verspätete Antwort, aber ich hab viel zu tun im Moment …
Im Prinzip ist dein Code ok so. Schließlich liefert er die Ergebnisse die er soll
Ich habe dennoch etwas darin korrigiert und den Code meinem Stil angepasst, das heißt nicht das man es so machen muss, aber ich finde so wird er gut lesbar und etwas kürzer. Die Ausgabe bleibt die gleiche.
Ich hoffe, ich habe alle offenen Fragen beantworten können und keine neuen aufgeworfen. Wenn ja, kannst du bitte den Status des Thread anpassen, wenn nein scheu dich nich nochmal nachzufragen
Gute Nacht!
Tobi

Entschuldige bitte die etwas verspätete Antwort, aber ich hab viel zu tun im Moment …
Im Prinzip ist dein Code ok so. Schließlich liefert er die Ergebnisse die er soll

\documentclass[]{scrartcl} \usepackage{tikz} \usetikzlibrary{calc} \usetikzlibrary{intersections} \newcommand\Punkt{\tikz[scale=0.07]\draw[thick](-1,-1)--(1,1)(-1,1)--(1,-1);} \begin{document} \begin{tikzpicture} % Gerade \draw[name path=a--b] (0,0)--(3.9,0); \node at (0.1,-0.2) {$g$}; % Punkt \node at (2.2,1.5) (P) {\Punkt}; \node[scale=0.9] at (2.2,1.5) [anchor=south west] {$P$}; % Kreisbogen \begin{scope} \clip (0,-0.1) rectangle (3.9,0.1); \draw [name path global=c] (P) circle (1.8cm); \end{scope} % Schnittpunkte \path [name intersections={of=a--b and c, by={A, B}}]; \node at (A) [below] {$A$}; \node at (B) [below] {$B$}; \end{tikzpicture} \end{document}
Das liegt daran, das Pfade nur innerhalb des aktuellen {scope} benannt werden. Mit name path global kann hier Abhilfe geschaffen werden. Aber deine Version, den Pfad zu wiederholen, ist auch ok. Da ist dann nur das Problem, das Änderungen etwa am Radius immer an zwei Stellen gemacht werden müssen.%Bei dem Befehl darüber erkennt er dann nicht, was "c" ist
Es fehlt auch kein Semikolon, aber du hast die Funktion des by-Schlüssels nicht ganz korrekt benutzt. Diesem Schlüssel kann man nur eine Liste mit Namen – z. B. by={A, B} – übergeben. Dann wird an jedem Schnittpunkt eine Koordinate mit einem Namen aus der Liste erstellt – bei uns hieße der erste Schnittpunkt dann also (A) und der zweite (B). Auf diese Koordinaten kannst du dann zugreifen und sie „belabeln“. Nur in einem Schritt geht das nicht, auch wenn es eine gute Idee für künftige Versionen wäre.% \path [name intersections={of=a--b and c, by={[label=below:$A$] (A), [label=below:$B$] (B)}}]; hier hat er Probleme mit den Buchstaben in den runden Klammern, keine Ahnung warum. Die log fragt, ob nicht ein Semikolon fehlt, wüsste aber nicht wo.
Ich würde sagen nein. PGF ist die Basis, auf die TikZ aufbaut. Als normaler User sollte man eigentlich alles auf TikZ-Ebene lösen können.Und hätte man das auch irgendwie mit dem pgfintersection of paths eleganter lösen können?
Ich hoffe, ich habe alle offenen Fragen beantworten können und keine neuen aufgeworfen. Wenn ja, kannst du bitte den Status des Thread anpassen, wenn nein scheu dich nich nochmal nachzufragen

Gute Nacht!
Tobi
-
- Forum-Fortgeschrittener
- Beiträge: 59
- Registriert: Mo 22. Aug 2011, 14:50