주어진 줄 수에 대해 자동으로 영역 수를 최대화하려면 이 그림에 숫자를 추가하려면 어떻게 해야 합니까?

주어진 줄 수에 대해 자동으로 영역 수를 최대화하려면 이 그림에 숫자를 추가하려면 어떻게 해야 합니까?

이 그림에서는 평면선을 나누는 선의 영역에 번호를 매기고 싶습니다. 여기에 이미지 설명을 입력하세요

한 줄이면 두 개의 영역이 있고, 두 줄이면 네 개의 영역이 있습니다. 나는 노력했다

\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} 

여기에 이미지 설명을 입력하세요

여기에 이미지 설명을 입력하세요

나는 최대 숫자 $ L_n $가 $ \dfrac{n^2+n+2}{2} $라는 것을 알고 있습니다. 위의 그림을 자동으로 그리는 방법은 무엇입니까? 이 그림에 자동으로 숫자를 추가하려면 어떻게 해야 합니까?

답변1

이것은 완전한 대답과는 거리가 멀다. 문제는 라인의 수가 주어졌을 때 어떻게 n영역의 수가 최대 수인 에 도달하도록 배열할 수 있느냐 는 것 같습니다 (n^2+n+2)/2. 저는 다음과 같은 조건이 필요하다고 생각합니다.

  1. 서로 다른 두 선이 평행하지 않습니다.
  2. 주어진 교차점에서 두 개 이상의 선이 교차할 수 없습니다.

이러한 지침을 사용하여 그러한 배열을 만드는 사진을 구성할 수 있습니다.

\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}

여기에 이미지 설명을 입력하세요

숫자를 넣으려고도 하지 않았습니다.

답변2

이는 삼각형의 내심을 계산하는 매크로를 제공합니다. 어려운 부분은 부동 소수점 오버플로를 피하는 것이었습니다.

\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}

데모


기하학 수업

답변3

이러한 다이어그램을 그리는 것은 쉽습니다. 아래 코드는 매크로를 정의합니다 \DividedPlanes.

  \DividedPlanes{5}
  \DividedPlanes{6}

각각 5점과 6점에 대해 다음 구성을 생성합니다.

여기에 이미지 설명을 입력하세요

의 선은 \DividedPlanes{<n>}먼저 루프를 사용하여 점 에서 반경 원 주위에 좌표를 \foreach배치하여 그려집니다 . 그런 다음 모든 숫자 쌍(점)을 반복하여 선을 그립니다 . 현재(근무일) 시간보다 더 많이 생각하면 지역에 라벨을 붙일 수 있을 것입니다( 홀수일 때와 짝수일 때 동작이 약간 다릅니다). 지역 고양이 개체수가 나를 이길 수 없다면 나는 이것으로 다시 돌아올 수 있습니다.n22k\pi/nk=1,2,...,n{1,2,...,n}n

코드는 다음과 같습니다.

\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}

관련 정보