gpt4 book ai didi

latex - 使用 pgf/tikz 创建欧元符号

转载 作者:行者123 更新时间:2023-12-04 21:25:18 25 4
gpt4 key购买 nike

我正在尝试重建 TikZ 中的欧元符号。我的基本指南是
http://upload.wikimedia.org/wikipedia/commons/5/57/Euro_Construction.svg
我遇到的问题是到目前为止我可以计算所有的交点,但是
我无法指示 tikz 从例如绘制弧线A 到 K。虽然我可以画画
该弧使用剪裁,据我所知不会产生连接
小路。我试图避免手动计算所有角度。
对于 SVG 支持,有\pgfpatharcto,虽然这似乎有点矫枉过正,
它可能会完成这项工作,这让我想到了下一个问题:我如何从\pgfpoints 中获取
命名坐标,例如(A) 在\pgfpatharcto 中使用它们?更好的是:
如何在 svg 路径数据中使用命名坐标?那基本上会
减少写作问题
\draw ... (B) -- (A) svg "a 6 6 0 0 0 (K)"-- (O) ...;
我已经拥有的是这样的:
Alt text
(来源:skitch.com)
已上传 Skitch
使用:

\begin{tikzpicture}
\draw[step=5mm, gray, very thin] (-7.5,-7.5) grid (7.5,7.5); % grid

% inner and outer circle to be used for the intersections
\path[name path=outer] (0,0) circle[radius=6];
\path[name path=inner] (0,0) circle[radius=5];

% upper, semi upper, semi lower and lower horizontal lines.
\path[name path=U] (-7.5,1.5) -- (4,1.5);
\path[name path=u] (-7.5,0.5) -- (4,0.5);
\path[name path=l] (-7.5,-0.5) -- (4,-0.5);
\path[name path=L] (-7.5,-1.5) -- (4,-1.5);

% the upwards slope and the vertical line at +-40 deg at 5 units.
\path[name path=slope] ($(0,-6)!0.25!(40:5)$) -- ($(0,-6)!1.25!(40:5)$);
\path[name path=fourty] ($(40:5)!0.5!(-40:5)$) -- ($(40:5)!1.25!(-40:5)$);

% naming all the intersections.
\path[name intersections={of=outer and slope, by={A}}];
\path[name intersections={of=inner and slope, by={B}}];

\path[name intersections={of=U and slope, by={C}}];
\path[name intersections={of=u and slope, by={D}}];
\path[name intersections={of=l and slope, by={E}}];
\path[name intersections={of=L and slope, by={F}}];

\path[name intersections={of=U and inner, by={G}}];
\path[name intersections={of=u and inner, by={H}}];
\path[name intersections={of=l and inner, by={I}}];
\path[name intersections={of=L and inner, by={J}}];

\path[name intersections={of=U and outer, by={K}}];
\path[name intersections={of=u and outer, by={L}}];
\path[name intersections={of=l and outer, by={M}}];
\path[name intersections={of=L and outer, by={N}}];

\coordinate (O) at ($(-7.5,0.5)+(C)-(D)$);
\coordinate (P) at (-7.5,0.5);
\coordinate (Q) at ($(-7.5,-1.5)+(E)-(F)$);
\coordinate (R) at (-7.5,-1.5);

\path[name intersections={of=fourty and inner, by={S}}];
\path[name intersections={of=fourty and outer, by={T}}];

% drawing the intersections
\foreach \p in {A,...,T} \fill[red] (\p) circle (2pt) node[above left,black] {\footnotesize\p};

% constructing the path
\draw (A) -- (B) (G) -- (C) -- (D) -- (H) (I) -- (E) -- (F) -- (J) (S) -- (T) (N) -- (R) -- (Q) -- (M) (L) -- (P) -- (O) -- (K);

% missing segments
\draw[gray,dashed] circle[radius=5] circle[radius=6];

\end{tikzpicture}

更新 (在 pgf maling list 的帮助下,我们得到了以下解决方案)
\draw[thick,fill] let \p1=(A), \p2=(K), \p3=(L), \p4=(M), \p5=(N), \p6=(T),
\p7=(S), \p8=(J), \p9=(I), \p{10}=(H), \p{11}=(G), \p{12}=(B),
\n{aA}={atan2(\x1,\y1)}, \n{aK}={atan2(\x2,\y2)},
\n{aL}={atan2(\x3,\y3)}, \n{aM}={360+atan2(\x4,\y4)},
\n{aN}={360+atan2(\x5,\y5)}, \n{aT}={360+atan2(\x6,\y6)},
\n{aS}={360+atan2(\x7,\y7)}, \n{aJ}={360+atan2(\x8,\y8)},
\n{aI}={360+atan2(\x9,\y9)}, \n{aH}={atan2(\x{10},\y{10})},
\n{aG}={atan2(\x{11},\y{11})}, \n{aB}={atan2(\x{12},\y{12})}
in (A) arc (\n{aA}:\n{aK}:6) -- (O) -- (P)
-- (L) arc (\n{aL}:\n{aM}:6) -- (Q) -- (R)
-- (N) arc (\n{aN}:\n{aT}:6)
-- (S) arc (\n{aS}:\n{aJ}:5) -- (F) -- (E)
-- (I) arc (\n{aI}:\n{aH}:5) -- (D) -- (C)
-- (G) arc (\n{aG}:\n{aB}:5) -- cycle;
这让 TikZ 计算点的角度,然后它是对 arc 的简单调用。
对我来说棘手的部分是数学引擎的使用。文档太多了
我错过了使用花括号为数学引擎分配新值的部分。

最佳答案

允许我在 TikZ 中只画了 1 个(数一数)图,有什么问题

\draw (A) arc (Aangle:Kangle:outerRadius)

哪里 outerRadius似乎是 6 和 Aangle似乎是 40 度,而且我没有立即在提供的数据中看到 Kangles(但该值是完全受限的...看起来像 arcsin(1.5/6) )。

关于latex - 使用 pgf/tikz 创建欧元符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4355744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com