圆形桌子?(每排座位呈同心圆排列)

圆形桌子?(每排座位呈同心圆排列)

我需要制作一张桌子,其中的行由同心圆组成。也就是说,第 1 行形成最内圈;第 2 行形成第二个圈;第 3 行形成第三个圈,依此类推。因此,列将形成在圆圈中心相交的披萨片。

我试图根据下图重新创建一系列表格(值得一提的是,该表格来自 1626 年在中国出版的耶稣会作品)。同一个字母的五个实例(“a”、“e”、“i”等)都位于同一列但不同的行上。

如果可以的话,我会提供一些基本的 MWE,但我不知道从哪里开始。如果能得到任何帮助,我将不胜感激。谢谢!

在此处输入图片描述

答案1

我不确定这是否能回答“如何更改每行的字母列表”或者不是,但是:

这是外行与内行不同的图表。我使用循环\foreach“同时”迭代两个变量\romanized\outer。(您可以轻松地将其扩展到两个以上的变量。)代码基本上是从前两个答案中窃取的。

\documentclass[varwidth,border=1em]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,decorations.text}

\begin{document}
\begin{tikzpicture}
\node at (90:5.5) {\Large 萬國音韻話圖};
\def\ct{30}
\def\halfring{ʿ}
\foreach \romanized/\outer [count=\i] in {
    % No guarantees that the Chinese characters are correct
    a/丫, e/額, i/衣, o/阿, u/午, ç/則, \halfring ç/測, ch/者, \halfring ch/搐,
    k/格, \halfring k/克, p/克, \halfring p/魄, t/德, \halfring t/忒, j/日, v/物,
    f/弗, g/額, l/勒, m/麥, n/搦, s/色, x/石, h/黑, b/〇, d/〇, r/〇, z/〇,
} {
    \pgfmathsetmacro{\angle}{90-360/\ct*\i}
    \draw (\angle-360/\ct/2:1.5) -- (\angle-360/\ct/2:4.5);
    \node[rotate=-90+\angle] at (\angle:4.25) {\outer};
    \foreach \r in {1,...,5} {
        \pgfmathsetmacro{\radius}{1.25+\r*0.5}
        \node[rotate=-90+\angle,text depth=0,text height=1ex] at (\angle:\radius)
             {\sffamily\itshape\romanized};
    }
}
\foreach \r in {1,...,8,8.1} { \draw (0,0) circle(0.5+\r*0.5); }
\foreach \inner [count=\i] in {次淸甚,次濁甚,次上甚,次去甚,次入甚} {
    \pgfmathsetmacro{\angle}{90-360/5*\i-360/\ct/2}
    \draw (\angle:1) -- (\angle:1.5);
    \draw[decorate, decoration={reverse path, text align=center,
          text along path, text={\inner}}] (\angle:1.125) arc (\angle:\angle+360/5:1.125);
};
\end{tikzpicture}
\end{document}

答案2

初始点:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\usetikzlibrary{calc}
\begin{tikzpicture}
\foreach \letter [count=\i] in {q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b, → n,m} {
 \pgfmathsetmacro{\angle}{-360/26*\i}
 \draw (\angle-360/26/2:1.25) -- (\angle-360/26/2:4.75);
 \foreach \r in {1,...,7} {
    \pgfmathsetmacro{\radius}{1+\r*0.5}
    \node[rotate=-90+\angle] at (\angle:\radius) {\letter};
 }
}
 \foreach \r in {1,...,8}  {
     \draw (0,0) circle(0.75+\r*0.5);
}
\end{tikzpicture}
\end{document}

结果

答案3

\curvedtext另一种尝试是,通过采用 4 个参数 #1=角度、#2=半径、#3=颜色、#4=内容,将文本写入其中。此解决方案使用foreach循环来绘制圆和射线。

\foreach \rr in {5,10,...,25}{  % radius can be adjusted for one's selection.
  \draw  (A) circle (\rr);
}
\foreach \aa in {1,...,\pp}{
\draw ($(A)+({\aa*360/\pp}:10)$) --  ($(A)+({\aa*360/\pp}:25)$); 
}

要绘制射线,需要提供\pp切片数。此示例有 20 个切片。因此每个切片为 18 度。有了这些信息,就可以确定要放置文本的每个插槽的位置(极坐标)。

在此处输入图片描述

代码

\documentclass[border=10pt]{standalone}%{article}
%\usepackage[papers=30cm,paperwidth=35cm,margin=1in,heightrounded]{geometry}
\usepackage{tikz}
\usetikzlibrary{calc,decorations.text}
\usetikzlibrary{calc}
\def\curvedtext#1#2#3#4{%
\path[decorate, decoration={text along path, text align=center, text={|\color{#3}\small|#4}}]
($(A)+(#1+20:#2)$) arc (#1+20:#1-20:#2);
}    % borrowed from http://tex.stackexchange.com/a/177455/34618
\begin{document}
\thispagestyle{empty}
\begin{tikzpicture}[scale=0.2]
% center
\path  (0,0) coordinate(A);
% circles
\foreach \rr in {5,10,...,25}{
  \draw  (A) circle (\rr);
}
\def\pp{20} % nb of slices
% rays
\foreach \aa in {1,...,\pp}{
\draw ($(A)+({\aa*360/\pp}:10)$) --  ($(A)+({\aa*360/\pp}:25)$); 
}
\curvedtext{45}{22}{blue}{ABC};
\curvedtext{27}{22}{blue}{DEF};
\curvedtext{9}{22}{blue}{HIJ};
\curvedtext{25}{17}{red}{B};
\curvedtext{7}{12}{green!60!black}{C};
\path[draw,decorate, decoration={text along path, text align=center, text={A very long sentence around the circular path and...}}] (0,0) circle (8);
\end{tikzpicture}
\end{document}

相关内容