Ich möchte den Bereich der Linien nummerieren, die eine ebene Linie in diesem Bild teilen.
Mit einer Linie haben wir zwei Regionen, mit zwei Linien haben wir vier Regionen. Ich habe versucht
\documentclass[tikz,12pt]{standalone}
\begin{document}
\begin{tikzpicture}
\path
(0,0) coordinate (O)
(-2,-2) coordinate (A)
(2,2) coordinate (B)
(2,-2) coordinate (C)
(-2,2) coordinate (D);
\node at (barycentric cs:A=1,C=1,B=1) {$1$};
\node at (barycentric cs:A=1,D=1,B=1) {$2$};
\draw (A) -- (B);
\end{tikzpicture}
\begin{tikzpicture}
\path
(0,0) coordinate (O)
(-2,-2) coordinate (A)
(2,2) coordinate (B)
(-4,-2) coordinate (C)
(4,2) coordinate (D);
\draw (A) -- (B) (C) -- (D);
\node at (barycentric cs:A=1,O=1,C=1) {$1$};
\node at (barycentric cs:B=1,O=1,C=1) {$2$};
\node at (barycentric cs:B=1,O=1,D=1) {$3$};
\node at (barycentric cs:A=1,O=1,D=1) {$4$};
\end{tikzpicture}
\end{document}
Ich weiß, dass die maximale Zahl $ L_n $ $ \dfrac{n^2+n+2}{2} $ ist. Wie kann ich das obige Bild automatisch zeichnen? Wie kann ich Zahlen automatisch in dieses Bild einfügen?
Antwort1
Dies ist bei weitem keine vollständige Antwort. Die Frage scheint zu sein, wie n
man bei gegebener Anzahl von Linien diese so anordnen kann, dass die Anzahl der Regionen ihre maximale Anzahl erreicht. (n^2+n+2)/2
Ich denke, dass die folgenden Bedingungen notwendig sind:
- Keine zwei verschiedenen Linien sind parallel.
- In einem Schnittpunkt dürfen sich nicht mehr als zwei Geraden schneiden.
Mithilfe dieser Richtlinien kann man ein Bild erstellen, das eine solche Anordnung erzeugt.
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[pics/divi/.style={code={
\foreach \X [evaluate=\X as \Y using {360*\X/(#1+1-isodd(#1))}]
in {1,...,#1}
\draw[scale=1/#1] ({90+\Y}:#1/4)
++ ({180+\Y}:1+1.5*#1) -- ++ ({\Y}:2+3*#1);
}}]
\matrix {\pic {divi=1}; & \pic {divi=2}; \\
\pic {divi=3}; & \pic {divi=4}; \\
\pic {divi=5}; & \pic {divi=6}; \\
};
\end{tikzpicture}
\end{document}
Ich habe nicht einmal versucht, die Zahlen einzugeben.
Antwort2
Dies stellt ein Makro zum Berechnen des Mittelpunkts eines Dreiecks bereit. Der schwierige Teil war die Vermeidung von Gleitkommaüberläufen.
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\newcommand{\incenter}[4]% #1-#3 = coordinate names for vertices, #4 = name of incenter
{\pgfscope
\pgfpathmoveto{\pgfpointanchor{#1}{center}}%
\pgfgetlastxy{\xa}{\ya}%
\pgfpathmoveto{\pgfpointanchor{#2}{center}}%
\pgfgetlastxy{\xb}{\yb}%
\pgfpathmoveto{\pgfpointanchor{#3}{center}}%
\pgfgetlastxy{\xc}{\yc}%
\pgfmathsetmacro{\a}{veclen(\xc-\xb,\yc-\yb)}%
\pgfmathsetmacro{\b}{veclen(\xc-\xa,\yc-\ya)}%
\pgfmathsetmacro{\c}{veclen(\xb-\xa,\yb-\ya)}%
\pgfmathsetmacro{\d}{\a+\b+\c}%
\pgfmathsetmacro{\a}{\a/\d}%
\pgfmathsetmacro{\b}{\b/\d}%
\pgfmathsetmacro{\c}{\c/\d}%
\pgfmathsetlengthmacro{\xo}{\a*\xa + \b*\xb + \c*\xc}%
\pgfmathsetlengthmacro{\yo}{\a*\ya + \b*\yb + \c*\yc}%
\pgfcoordinate{#4}{\pgfpoint{\xo}{\yo}}
\endpgfscope}
\begin{document}
\begin{tikzpicture}
\path
(0,0) coordinate (O)
(-2,-2) coordinate (A)
(2,2) coordinate (B)
(2,-2) coordinate (C)
(-2,2) coordinate (D);
\draw (A) -- (B);
\incenter{A}{C}{B}{O1}%
\node at (O1) {1};
\incenter{A}{D}{B}{O2}%
\node at (O2) {2};
\end{tikzpicture}
\begin{tikzpicture}
\path
(0,0) coordinate (O)
(-2,-2) coordinate (A)
(2,2) coordinate (B)
(-4,-2) coordinate (C)
(4,2) coordinate (D);
\draw (A) -- (B) (C) -- (D);
\incenter{A}{O}{C}{O1}%
\node at (O1) {1};
\incenter{B}{O}{C}{O2}%
\node at (O2) {2};
\incenter{B}{O}{D}{O3}%
\node at (O3) {3};
\incenter{A}{O}{D}{O4}%
\node at (O4) {4};
\end{tikzpicture}
\end{document}
Antwort3
Das Zeichnen dieser Diagramme ist einfach. Der folgende Code definiert ein Makro, \DividedPlanes
, so dass
\DividedPlanes{5}
\DividedPlanes{6}
erzeugt diese Konfigurationen für 5 bzw. 6 Punkte:
Die Linien in \DividedPlanes{<n>}
werden gezeichnet, indem zuerst eine \foreach
Schleife verwendet wird, um n
Koordinaten um einen Kreis mit Radius 2
an den Punkten zu platzieren 2k\pi/n
, für k=1,2,...,n
. Danach werden die Linien gezeichnet, indem eine Schleife über alle Zahlenpaare (entspricht Punkten) in ausgeführt wird {1,2,...,n}
. Wenn ich mehr darüber nachdenke, als mir im Moment Zeit dafür bleibt (es ist ein Arbeitstag), sollte es möglich sein, die Regionen zu beschriften (das Verhalten ist leicht unterschiedlich, wenn n
ungerade und wenn gerade ist). Ich werde vielleicht darauf zurückkommen, wenn mir die lokale Katzenpopulation nicht zuvorkommt.
Hier ist der Code:
\documentclass{article}
\usepackage{tikz}
% allow an optional argument so that we can pass some optional
% style commands to the tikzpicture environment
% usage: \DividedPlanes[style]{n}
\newcommand\DividedPlanes[2][]{
\begin{tikzpicture}[#1]
% reserve some real estate for the image
\draw[white](-3,-3) rectangle (3,3);
\foreach \pt in {1,...,#2} {
% name coordinates (1), (2), ..., (#2)
\coordinate (\pt) at (\pt*360/#2:2);
}
\foreach \apt in {1,...,#2} {
\foreach \bpt in {1,...,#2} {
\ifnum\apt=\bpt\else
% draw a line when a and b are distinct
\draw[shorten >=-20,shorten <=-20](\apt)--(\bpt);
\fi
}
}
\end{tikzpicture}
}
\begin{document}
\DividedPlanes{2}
\DividedPlanes{3}
\DividedPlanes{4}
\DividedPlanes{5}
\DividedPlanes{6}
\end{document}