tikz 循环,创建具有锯齿状斜边的三角形

tikz 循环,创建具有锯齿状斜边的三角形

我急需构建下面的图像。简而言之,我试图创建该图像的精确复制品,以及具有更多锯齿状斜边的替代图像。

锯齿状斜边

我考虑过在 latex 中使用 for 循环,但由于我经验不足,这很困难。我的初步进展如下所示

\documentclass[10pt,a4paper]{minimal}
\usepackage{tikz,tkz-euclide}
\usepackage{mathtools,amssymb,amsmath}
\begin{document}

\begin{tikzpicture}[scale=4]
\def \a{5}
\tkzDefPoint(0,0){O} \tkzDefPoint(1,0){A} \tkzDefPoint(1,1){B}
\tkzDrawSegments(O,A A,B) 
\tkzLabelSegment[below](O,A){1} \tkzLabelSegment[right](A,B){1}
\tkzLabelPoints[below left](O) \tkzLabelPoints[below right](A) \tkzLabelPoints[above right](B)
\foreach \i in {0,...,\a}{
\tkzDrawSegment( ( \i:\a, \i:\a ),( \i:\a,(\i+1):\a ) )}
\end{tikzpicture}
%\tkzDrawSegment( ( \i:\a,(\i+1):\a ),((\i+1):\a,(\i+1):\a))

\end{document}

任何帮助都将不胜感激。我的问题是创建 for 循环。我就是做不对,我认为问题是 latex 将 0/4 和 1/3 评估为符号而不是数字

答案1

我说的是tkz,但问题出在糟糕的 tikz 语法上。你可以用 来除以数字,/而不能用:。然后使用 tkz 或 tikz,有时你需要隐藏(...)和 分隔符,。在这里,如果你想在 tkz 的宏中使用坐标(a,b)(c,d),你需要写

 \tkzDrawSegment({a,b},{c,d}) 

代替

 \tkzDrawSegment((a,b),(c,d)) % The parser don't understand in this case.

现在,我认为更容易使用shift来获得“锯齿状斜边”。与其他答案一样,您可以使用 tikz 绘制锯齿状斜边,或者像我一样使用 tkz。

\documentclass[10pt,a4paper]{minimal}
\usepackage{tikz,tkz-euclide}
\usepackage{mathtools,amssymb,amsmath}
\begin{document}

\begin{tikzpicture}[scale=4]
\def \a{5}
\tkzDefPoint(0,0){O} \tkzDefPoint(1,0){A} \tkzDefPoint(1,1){B}
\tkzDrawSegments(O,A A,B) 
\tkzLabelSegment[below](O,A){1} \tkzLabelSegment[right](A,B){1}
\tkzLabelPoints[below left](O) \tkzLabelPoints[below right](A) \tkzLabelPoints[above right](B)
\pgfmathsetmacro{\endl}{\a-1}
 \foreach \i in {0,...,\endl}{ 
\begin{scope}[shift={(\i/\a,\i/\a)}]
    \tkzDrawSegment({0,0},{0,1/5}) 
    \tkzDrawSegment({0,1/5},{1/5,1/5})
    % or \tkzDrawSegments({0,0},{0,1/5} {0,1/5},{1/5,1/5})
    \tkzLabelSegment[left]({0,0},{0,1/5}){$\frac{1}{\a}$} 
\end{scope}
}
\end{tikzpicture}    
\end{document}

在此处输入图片描述

答案2

foreach我使用宏键时出了点问题(initially 0)。它卡在第一个点上,所以我必须在循环之前定义它。以下工作不需要过多强调外观。A,B,C可以轻松添加节点等。

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=3]
\def\lastx{0} % I don't know what the problem is with (initially 0) key
\def\divno{8} % Division number
\pgfmathsetmacro\initpoint{1/\divno}
\pgfmathsetmacro\incr{2/\divno}
\draw (0,0) -| (1,1);
\foreach \x [remember=\x as \lastx ]in {\initpoint,\incr,...,1}{
\draw (\x , \x)  -| ( \lastx , \lastx);
\draw[dashed] (\x , \x)   -| ( \x ,0);
\draw[dashed] (\x , \x)  -- ( 1,\x);
\node[left] at ([yshift=0.25*\incr cm]\lastx,\lastx) {$\frac{1}{\divno}$};
}
\end{tikzpicture}
\end{document}

例如 8 和 5

在此处输入图片描述 在此处输入图片描述

答案3

我不会说 TkZ,但这是另一个非常简单的 TikZ 实现(请注意,我改变了 x 和 y 长度而不是缩放,因为这通常会产生更好的结果):

\documentclass{article}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}[x=4cm, y=4cm]
    \def\steps{5}
    \pgfmathsetmacro\stepsize{1/\steps}

    \draw (0,0) 
        node[below] {$A$}
        -- node[below] {$1$}
        (1,0) node[below right] {$B$}
        -- node[right] {$1$} 
        (1,1) node[right] {$C$};

    \foreach \i in {1,2,...,\steps} {
        \draw [green!50!black,thick]
            ({(\i-1)*\stepsize},{(\i-1)*\stepsize})
            -- node[left] {\normalcolor$\frac{1}{\steps}$}
               ({(\i-1)*\stepsize}, {\i*\stepsize})
            -- ({\i*\stepsize}, {\i*\stepsize});
    }
    \pgfmathsetmacro\steps{int(\steps-1)}
    \foreach \i in {1,2,...,\steps} {
        \draw [green!50!black,dashed] 
            ({\i*\stepsize}, {\i*\stepsize})
            edge (1,{\i*\stepsize})
            edge ({\i*\stepsize}, 0);
    }
\end{tikzpicture}
\end{document}

结果

答案4

这是另一个带有情节的答案

\documentclass[10pt,a4paper]{minimal}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}[scale=4]
\draw[color=blue] plot [domain=0:1,samples=6,const plot mark right,mark= ,] (\x,\x) coordinate(end);
\draw (0,0) -| (end);
\end{tikzpicture} 
\end{document}

在此处输入图片描述

相关内容