tikz 中的点位置问题

tikz 中的点位置问题

我对 tikz 还很陌生,我正在尝试绘制一个圆,圆上有规则的点。如果我要求小于或等于 46 个点,我的代码就可以正常工作。对于更多的点,一切都出错了(点的位置错误),但编译时没有错误消息。

这是我的代码:

\documentclass[french,12pt]{article} % I'm in France.

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\geometry{top=1.5cm,bottom=1.5cm,left=1.5cm,right=1.5cm}
\usepackage[french]{babel}
\usepackage{pgfplots}

\usetikzlibrary{calc,quotes,arrows}
\usepackage{fancyhdr}
\usepackage{graphicx}

\pagestyle{empty}

\begin{document}

    \sffamily 

    \newcommand{\rayon}{5cm} % Rayon du cercle en cm (radius of the circle)
    \newcommand{\nbPt}{46} % Nombre de points sur le cercle (Number of points on the circle)
    \pgfmathsetmacro{\nb}{\nbPt-1}

    \begin{center}
        \begin{tikzpicture}
            \draw(0,0) circle (\rayon); % Tracer le cercle (Draw the circle)
            \foreach \i in {0,1,...,\nb} {
                \pgfmathsetmacro{\angle}{360*\i/\nbPt};
                \draw(\angle:\rayon) node{+}; \draw(\angle:\rayon*1.08) node{\i};
            }
        \end{tikzpicture}
    \end{center}

\end{document}

我可能犯了一些错误,但我找不到错误在哪里。如果有人能给我一些帮助就太好了。

谢谢。

答案1

问题是pgf使用 TeX 尺寸进行数学运算。它可以处理的最大尺寸是16383.99998 pt(TeX 的最大尺寸)。因此,您必须更改此计算的顺序\pgfmathsetmacro{\angle}{360*\i/\nbPt};。先除以,\nbPt然后乘以,\i或者只需在两边加上两个括号,(\i/\nbPt)以避免尺寸过大。

\documentclass[french,12pt]{article} % I'm in France.

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\geometry{top=1.5cm,bottom=1.5cm,left=1.5cm,right=1.5cm}
\usepackage[french]{babel}
\usepackage{tikz}

\usetikzlibrary{calc,quotes,arrows}
\usepackage{fancyhdr}
\usepackage{graphicx}

\pagestyle{empty}

\begin{document}

    \sffamily 

    \newcommand{\rayon}{5cm} % Rayon du cercle en cm (radius of the circle)
    \newcommand{\nbPt}{60} % Nombre de points sur le cercle (Number of points on the circle)
    \pgfmathsetmacro{\nb}{\nbPt-1}

    \begin{center}
        \begin{tikzpicture}
            \draw(0,0) circle (\rayon); % Tracer le cercle (Draw the circle)
            \foreach \i in {0,1,...,\nb} {
                \pgfmathsetmacro{\angle}{360/\nbPt*\i};
                \draw(\angle:\rayon) node{+}; \draw(\angle:\rayon*1.08) node{\i};
            }
        \end{tikzpicture}
    \end{center}

\end{document}

在此处输入图片描述

相关内容