Wie kann ich diesen Bildern Zahlen hinzufügen, um die Anzahl der Regionen für eine bestimmte Anzahl Zeilen automatisch zu maximieren?

Wie kann ich diesen Bildern Zahlen hinzufügen, um die Anzahl der Regionen für eine bestimmte Anzahl Zeilen automatisch zu maximieren?

Ich möchte den Bereich der Linien nummerieren, die eine ebene Linie in diesem Bild teilen. Bildbeschreibung hier eingeben

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} 

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

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 nman bei gegebener Anzahl von Linien diese so anordnen kann, dass die Anzahl der Regionen ihre maximale Anzahl erreicht. (n^2+n+2)/2Ich denke, dass die folgenden Bedingungen notwendig sind:

  1. Keine zwei verschiedenen Linien sind parallel.
  2. 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}

Bildbeschreibung hier eingeben

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}

Demo


Geometrie-Unterricht

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:

Bildbeschreibung hier eingeben

Die Linien in \DividedPlanes{<n>}werden gezeichnet, indem zuerst eine \foreachSchleife verwendet wird, um nKoordinaten um einen Kreis mit Radius 2an 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 nungerade 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}

verwandte Informationen