Разделить целые числа и получить число с плавающей точкой (для координаты pstricks)

Разделить целые числа и получить число с плавающей точкой (для координаты pstricks)

Я создаю картинку с помощью pstricks и хотел бы нанести на график точки, координаты которых являются дробями a/c, b/c, где a, b и c находятся в определенных диапазонах. Я пробовал использовать \numexpr, но он округляет в меньшую сторону. Я бы не стал использовать \dimexpr, так как предполагаю, что измерение (заканчивающееся на pt или что-то в этом роде) не приветствуется в качестве координаты pstricks. Я пробовал использовать pgf, но не могу заставить работать синтаксис:

\documentclass{article}
\usepackage{amsmath}
\usepackage{pstricks,pst-node,multido}
\RequirePackage{pgf}%
\begin{document}

\psset{xunit=5cm,yunit=5cm}
\begin{pspicture}(0,0)(1,1)
\multido{\iC=1+1}{5}{%
  \multido{\iA=0+1}{\iC}{%
    \multido{\iB=0+1}{\iC}{%
      \pscircle*(\pgfmathparse{\iA/\iC},\pgfmathparse{\iB/\iC}){0.02}
    }
  }
}
\end{pspicture}
\end{document}

Желаемый результат (создан с помощью TikZ, который работает для этого примера 5x5, но при использовании больших масштабов, которые я хочу использовать, у TeX заканчивается память). Желаемый результат

решение1

\documentclass{article}
\usepackage{pstricks,multido}
\begin{document}

\psset{xunit=5cm,yunit=5cm}
\begin{pspicture}(0,0)(1,1)
\multido{\iC=1+1}{5}{%
    \multido{\iA=0+1}{\iC}{%
        \multido{\iB=0+1}{\iC}{%
            \psdot(!\iA\space \iC\space div \iB\space \iC\space div)
        }%
    }%
}%
\end{pspicture}
\end{document}

или

\documentclass{article}
\usepackage{pstricks,multido,pst-calculate}
\begin{document}

\psset{unit=8}
\begin{pspicture}(2,2)
\multido{\iC=1+1}{20}{%
    \multido{\iA=0+1}{\numexpr\iC+1}{%
        \multido{\iB=0+1}{\numexpr\iC+1}{%
            \psdot[dotscale=0.5](\pscalculate{\iA/\iC},\pscalculate{\iB/\iC})
        }%
    }%
}%
\end{pspicture}
\end{document}

введите описание изображения здесь

решение2

Вы забыли вызвать \pgfmathresult.

\documentclass{article}
\usepackage{amsmath}
\usepackage{pstricks,pst-node,multido}
\RequirePackage{pgf}%
\begin{document}

\psset{xunit=5cm,yunit=5cm}
\begin{pspicture}(0,0)(1,1)
\multido{\iC=1+1}{5}{%
  \multido{\iA=0+1}{\iC}{%
    \multido{\iB=0+1}{\iC}{%
    \pgfmathparse{\iA/\iC}\xdef\myx{\pgfmathresult}
    \pgfmathparse{\iB/\iC}\xdef\myy{\pgfmathresult}
    \pscircle*(\myx,\myy){0.02}
    }
  }
}
\end{pspicture}
\end{document}

Просто ради любопытства, не могли бы вы также добавить свой Ti?кПример Z? Я немного удивлен вашей ошибкой.

ОБНОВЛЯТЬ: У меня не возникает никаких проблем при использовании TiкZ, где код короче, не требуются пакеты и компиляция удобнее (хотя мне очень нравится PSTricks).

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=10]
\foreach \iC in {1,...,15}{%
  \foreach \iA in {0,...,\iC}{%
   \foreach \iB in {0, ...,\iC}{%
      \draw[fill=black] ({\iA/\iC},{\iB/\iC}) circle (0.002);
    }
  }
}
\end{tikzpicture}
\end{document}

Пример 15x15

решение3

Также доступно вМетапост, здесь завернуто в luamplibтак что скомпилируйте сlualatex или подумайте, как адаптировать его дляНМП, или обычный МП.

введите описание изображения здесь

Я также добавила немного цвета.

\documentclass[border=5mm]{standalone}
\usepackage{luatex85, luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
    n = 25;
    for i = 1 upto n:
        for j = 0 upto i:
            for k = 0 upto i:
                fill fullcircle 
                     scaled 3 
                     shifted ((j/i, k/i) scaled (n*cm)) 
                     withcolor 3/4(j/i, k/i, i/n);
            endfor
        endfor
    endfor
endfig;
\end{mplibcode}
\end{document}

Связанный контент