serverone
03-01-2012, 15:06
Hallo,
ich möchte ein Bild in TIKZ zeichnen, bei dem 2 Punkte durch eine Gerade verbunden werden sollen, also es um den Punkt noch etwas weiter geht und nicht nur von Punkt zu Punkt. Habe beim Suchen das hier gefunden, das zumindest schonmal Rechenarbeit erspart:
http://www.golatex.de/viewtopic,p,30674.html#30674
geht soweit sehr schön.
Nun habe ich aber die Punkte als Koordinaten am Anfang eingegeben und würde das der Übersichtlichkeit wegen auch gern so lassen.
Gibt es eine TIKZ-Funktion, mit der man auf eine Koordinaten eines Punktes zugreifen kann? Dann wäre es ja gelaufen.
\documentclass{article}
\usepackage[ngerman]{babel} %Dokumentensprache Deutsch
\usepackage{color} %Farben benutzbar machen
\usepackage{scalefnt} %TiKZ skalierbar
\usepackage{graphicx, tikz} %TiKZ nutzbar
\usepackage{amsmath,amsthm,amssymb, mathtools} %Diverse mathematische Symbole
\usetikzlibrary{arrows}
\usetikzlibrary{snakes} %fuer geschweifte Klammern
\usetikzlibrary{calc}
\newcommand\ZeichneGerade[6]{%
\coordinate (Punkt1) at (#1,#2);
\coordinate (Punkt2) at (#3,#4);
\pgfmathsetmacro\m{(#4-#2)/(#3-#1)}%
\pgfmathsetmacro\n{#2-\m*#1}%
\draw plot[domain=#5:#6] (\x,{\m*\x+\n});
}
%Syntax: \ZeichneGerade{x1}{y1}{x2}{y2}{anfang plotbereich}{ende plotbereich}
\begin{document}
\begin{tikzpicture}[scale=2]
\coordinate (A) at (0,0);
\coordinate (B) at (2,0);
\coordinate[label=45:$C$] (C) at (2,2);
\coordinate[label=135:$D$] (D) at (0,2);
\coordinate[label=0:$A'$] (A') at (2,1);
\coordinate[label=90:$B'$] (B') at (1,2);
\coordinate (C') at (0,0);
\coordinate (D') at (2,0);
\fill (A) circle (0.05em) node[below] {$A=C'$};
\fill (B) circle (0.05em) node[below] {$B=D'$};
\fill (C) circle (0.05em);
\fill (D) circle (0.05em);
\fill (A') circle (0.05em);
\fill (B') circle (0.05em);
\draw (A)--(B)--(C)--(D) -- cycle; %V-Eck ABCD
\draw[red] (A')--(B')--(C')--(D') -- cycle; %V-Eck A'B'C'D'
\ZeichneGerade{0}{0}{2}{2}{-0.5}{2.5};
\end{tikzpicture}
\end{document}
Wobei ich dann das Trennen der Koordinaten im Makro ZeichneGerade machen würde, sodass man dann nur noch
\ZeichneGerade{(A)}{(B)}{-0.5}{2.5};
oder so eingeben müsste.
Wenn ich dann im Weiteren
\coordinate[label=90:$1'u$] (1'u) at (intersection of B'--A' and A--B);
schreibe, so ergibt das einen gültigen Punkt, also müsste man nur irgendwie TIKZ davon überzeugen können, dass an den Koordinaten nicht Schluss ist - ist das Möglich?
Vielen Dank für Antworten
serverone
ich möchte ein Bild in TIKZ zeichnen, bei dem 2 Punkte durch eine Gerade verbunden werden sollen, also es um den Punkt noch etwas weiter geht und nicht nur von Punkt zu Punkt. Habe beim Suchen das hier gefunden, das zumindest schonmal Rechenarbeit erspart:
http://www.golatex.de/viewtopic,p,30674.html#30674
geht soweit sehr schön.
Nun habe ich aber die Punkte als Koordinaten am Anfang eingegeben und würde das der Übersichtlichkeit wegen auch gern so lassen.
Gibt es eine TIKZ-Funktion, mit der man auf eine Koordinaten eines Punktes zugreifen kann? Dann wäre es ja gelaufen.
\documentclass{article}
\usepackage[ngerman]{babel} %Dokumentensprache Deutsch
\usepackage{color} %Farben benutzbar machen
\usepackage{scalefnt} %TiKZ skalierbar
\usepackage{graphicx, tikz} %TiKZ nutzbar
\usepackage{amsmath,amsthm,amssymb, mathtools} %Diverse mathematische Symbole
\usetikzlibrary{arrows}
\usetikzlibrary{snakes} %fuer geschweifte Klammern
\usetikzlibrary{calc}
\newcommand\ZeichneGerade[6]{%
\coordinate (Punkt1) at (#1,#2);
\coordinate (Punkt2) at (#3,#4);
\pgfmathsetmacro\m{(#4-#2)/(#3-#1)}%
\pgfmathsetmacro\n{#2-\m*#1}%
\draw plot[domain=#5:#6] (\x,{\m*\x+\n});
}
%Syntax: \ZeichneGerade{x1}{y1}{x2}{y2}{anfang plotbereich}{ende plotbereich}
\begin{document}
\begin{tikzpicture}[scale=2]
\coordinate (A) at (0,0);
\coordinate (B) at (2,0);
\coordinate[label=45:$C$] (C) at (2,2);
\coordinate[label=135:$D$] (D) at (0,2);
\coordinate[label=0:$A'$] (A') at (2,1);
\coordinate[label=90:$B'$] (B') at (1,2);
\coordinate (C') at (0,0);
\coordinate (D') at (2,0);
\fill (A) circle (0.05em) node[below] {$A=C'$};
\fill (B) circle (0.05em) node[below] {$B=D'$};
\fill (C) circle (0.05em);
\fill (D) circle (0.05em);
\fill (A') circle (0.05em);
\fill (B') circle (0.05em);
\draw (A)--(B)--(C)--(D) -- cycle; %V-Eck ABCD
\draw[red] (A')--(B')--(C')--(D') -- cycle; %V-Eck A'B'C'D'
\ZeichneGerade{0}{0}{2}{2}{-0.5}{2.5};
\end{tikzpicture}
\end{document}
Wobei ich dann das Trennen der Koordinaten im Makro ZeichneGerade machen würde, sodass man dann nur noch
\ZeichneGerade{(A)}{(B)}{-0.5}{2.5};
oder so eingeben müsste.
Wenn ich dann im Weiteren
\coordinate[label=90:$1'u$] (1'u) at (intersection of B'--A' and A--B);
schreibe, so ergibt das einen gültigen Punkt, also müsste man nur irgendwie TIKZ davon überzeugen können, dass an den Koordinaten nicht Schluss ist - ist das Möglich?
Vielen Dank für Antworten
serverone