tikz 社区,
经过几个小时寻找绘制狮子座的解决方案后,我意识到我无法找到控制点来获得想要的曲线。我尝试了 bend-to 和其他方法,但没有结果。我已固定近似坐标以显示想要的线的概念。有人能帮忙吗?由于版权问题,我没有添加照片,但我认为除了艺术自由之外,获取这个星座的图像并不困难。如果可能的话,我想在 tikz 中完成。
这个梦想有点荒唐。正如我所说,我无法实现它。
\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{
}
\usepackage[paperheight=160mm,paperwidth=180mm,top=5mm,bottom=5mm,left=5mm,right=5mm,showframe]{geometry}
\tikzset{%
>=latex, % option for nice arrows
inner sep=0pt,%
outer sep=2pt,%
mark coordinate/.style={inner sep=0pt,outer sep=0pt,minimum size=2pt,fill=black,circle}%
}
\begin{document}
% leo
\begin{tikzpicture}
\draw[step=0.5cm,help lines] (-2,-2) grid (3,4);
\foreach \x in {-2,-1.5,...,3}
\draw (\x cm,1pt) -- (\x cm,-1pt) node[anchor=north] {$\x$};
\foreach \y in {-2,-1.5,...,4}
\draw (1pt,\y cm) -- (-1pt,\y cm) node[anchor=east] {$\y$};
%
\draw[line width=4mm, line cap=round] (0,0) arc [start angle=0, end angle=360, radius=6mm];
%
\filldraw [gray] (0,0) circle [radius=2pt]; %
\filldraw [red] (1,0) circle [radius=2pt];
\filldraw [blue] (2,1) circle [radius=2pt];
\filldraw [green] (2,0) circle [radius=2pt];
%
\draw[line width=4mm, line cap=round] (0,0.5)
to[bend left=100] (0,3)
to[bend left=100] (1,0);
\end{tikzpicture}
%
\begin{tikzpicture}
\coordinate [mark coordinate] (l1) at (0.5,0);
\coordinate [mark coordinate] (l2) at (1.0,0.5);
\coordinate [mark coordinate] (l3) at (0.5,1);
\coordinate [mark coordinate] (l4) at (0.0,0.5);
\draw (l1) -- (l2) -- (l3) -- (l4) --(l1);
% line leaves the "circle" between l2 and l3
\coordinate [mark coordinate] (gb0) at (0.75,0.75);
% building a great bow. no circle
\coordinate [mark coordinate] (gb1) at (0.5,2.0);
\draw (gb0) -- (gb1);
\coordinate [mark coordinate] (gb2) at (1.5,2.5);
\coordinate [mark coordinate] (gb3) at (2.0,2.0);
\coordinate [mark coordinate] (gb4) at (1.55,-0.25);
\draw (gb1) -- (gb2) -- (gb3) -- (gb4);
% last bow to the right
\coordinate [mark coordinate] (lb1) at (1.75,-0.45);
\coordinate [mark coordinate] (lb2) at (2.0,-0.25);
\draw (gb4) -- (lb1) -- (lb2);
\end{tikzpicture}
\end{document}
答案1
有几种字体有天文符号。一般来说,你可以查阅全面的 LaTeX 符号列表,虽然很长,但很容易搜索。您可以在表 325–331 中找到感兴趣的字符。
使用\usepackage{starfont}
命令\Leo
生成:
使用wasysym
命令是\leo
:
marvosym
有\Leo
:
该包utfsym
包含\usym{264C}
:
答案2
答案3
完工了。
示例 4:来自http://tug.ctan.org/info/symbols/comprehensive/symbols-a4.pdf
在表 330 中,语句
所有 utfsym 符号都是用 TikZ 图形实现的,而不是用字体因此,如果您的符号不是字体,那么当然texpath
无法描述它。这意味着texpath
不适用于该utfsym
软件包或类似软件包!
来自 CarLaTeX 的评论。
如果你知道的话渐近线,你会发现它有几个很神奇的命令!
命令是path[] texpath(Label L)
(TEX 绘制标签 L 时将填充的路径数组)。您可以测试许多其他 LaTeX 符号。
usepackage("wasysym");
size(350,0);
path[] g=texpath("\leo");
write(g.length); // Outputs: 2
filldraw(g[0],cyan+green,red+dashed+.8bp);
filldraw(g[1],gray,blue+1.5bp);
write(cyclic(g[0])); // Outputs: true
write(cyclic(g[1])); // Outputs: true
arrow("the red and dashed path ",relpoint(g[0],0.78),dir(90));
arrow("the blue path which has the linewidth is 1.5bp",relpoint(g[1],0),dir(-90));
或\cancer
usepackage("wasysym");
size(350,0);
path[] g=texpath("\cancer");
write(g.length); // Outputs: 4
filldraw(g[1],gray,blue+1.5bp);
filldraw(g[0],cyan+green,red+dashed+.8bp);
filldraw(g[3],gray,blue+1.5bp);
filldraw(g[2],cyan+green,red+dashed+.8bp);
write(cyclic(g[0])); // Outputs: true
write(cyclic(g[1])); // Outputs: true
write(cyclic(g[2])); // Outputs: true
write(cyclic(g[3])); // Outputs: true
您可以手动处理曲线!
跑步渐近线代码在 MSWindows 系统上的 Notepad++ 中。
步骤 1:安装记事本++。
第 2 步:安装 TeXLive(Asymptote 作者推荐)、Adobe Acrobat Reader DC、Asymptote(最新版本)、Ghostscript(稳定版本)、ImageMagick(稳定版本)。
步骤3:添加以下两个文件:
异步文件属于 ..\Notepad++\autoCompletion
用户定义语言.xml属于 ..\PC\AppData\Roaming\Notepad++
要更新新命令,请参阅以下链接:
https://code.google.com/archive/p/asy4cn/downloads(用中文(表达) https://asy.marris.fr/forum/viewtopic.php?t=148(法语)
抱歉,我的母语是越南语,我也懂一点英语。
这是我安装成功后的几张照片。
跑步latexusage.tex在 TeXstudio 中:
按照如下步骤一步步运行:
Tools --> Commands --> PDFLaTeX
,输出如下Tools --> Commands --> Asymptote
,输出如下Tools --> Commands --> PDFLaTeX
, 完毕。
完成的文件位于 C:\Users\PC\Downloads 中,如附图所示。
您还可以选择http://asymptote.ualberta.ca/在线编译 Asymptote 代码。
您必须成功编译任何 Asymptote 代码,然后才能开始使用 Asymptote。
您可以尝试在 Linux 上安装 Notepad++!如果完成,请随时更新此答案。
明确我的观点You can handle the curves manually!
:
示例 1:我可以在 TeX 中将字母的贝塞尔控制点可视化吗?
示例 2:字体字符的动画填充
示例 3:
// settings.render=8;
unitsize(1cm);
import texcolors; // for pens like CornflowerBlue, Goldenrod,Bittersweet, Melon
texpreamble("\usepackage{starfont}");
path[] h=texpath("\Leo");
// To know the number of paths of Label L in texpath
write(h.length); // Outputs: 2
fill(h[1],pink+opacity(.5));
filldraw(h[0],CornflowerBlue,red+1.5bp);
pair[] P;
for(int j=0;j<size(h[0]);++j){ P.push(point(h[0],j)); }
pair interpoint=extension(P[0],P[2],P[1],P[3]);
for (int j=0; j<P.length; ++j){
dot("$P["+(string) j+"]$",P[j],dir(j*90));
}
filldraw(shift(interpoint)*scale(0.75)*shift(-interpoint)*h[0],CornflowerBlue+yellow,red+1.5bp);
real[] c=uniform(0,length(h[1]),5);
write(c); // Outputs: {0,4,8,12,16,20}
c.cyclic=true;
pen[] pp={YellowGreen+dashdotted+1bp,blue+dashed+1bp,dotted+1.5bp,Goldenrod+0.6bp,Bittersweet+0.7bp,Melon+0.8bp};
for (int i=0; i<c.length-1; ++i)
draw(subpath(h[1],c[i],c[i+1]),pp[i],Arrow(size=10));
draw((0,0)--(5,0),Arrow);
draw((5,0)--(-5,4),Arrow);
dot("$(0,0)$",(0,0),dir(90));
dot("$(5,0)$",(5,0),dir(0));
dot("$(-5,4)$",(-5,4),dir(90));
pair[] interpoints=intersectionpoints(h[1],(0,0)--(5,0)--(-5,4),sqrtEpsilon);
write(interpoints.length); // Outputs: 6
dot("$A$",interpoints[0]);
dot("$B$",interpoints[1]);
dot("$C$",interpoints[2]);
dot("$D$",interpoints[3]);
dot("$E$",interpoints[4]);
dot("$F$",interpoints[5]);
答案4
受 Asymptote 服务代表字形的贝塞尔控制点 (BCP) 的启发,我能够重现具有近似正确 BCP 的曲线。虽然在数学上不熟悉,但看到 Asymptote 提供的 BCP 对我有很大帮助。因此,一个好的答案似乎是:“拿一本数学书或训练你对控制点的使用。”
未解决的是 foreach 循环中 (0,0) 处的点 25 以及无法填充绘制区域的问题。我应该提出一个新问题吗?
姆韦
\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{
}
\usepackage{wasysym} % three pkgs with Leo signs
\usepackage{marvosym}
\usepackage{utfsym}
\usepackage[paperheight=160mm,
paperwidth=180mm,
top=5mm,
bottom=5mm,
left=5mm,
right=5mm,
%showframe
]{geometry}
\tikzset{%s
inner sep=0pt,%
outer sep=2pt,%
mark coordinate/.style={inner sep=0pt,outer sep=0pt,minimum size=00pt,}%mark=x}%
}
\begin{document}
wasysym \leo and marvosym \Leo and usym \usym{264C}
\begin{tikzpicture}[scale=1.0]
% a grid
\draw[step=.1cm,gray!50!white,very thin] (0,0) grid (8,10);
\draw[step=1cm,black!40!red, very thin,opacity=0.4] (0,0) grid (8,10);
\foreach \x/\xtext in {0,4,8}
\draw (\x cm,1pt) -- (\x cm,-1pt) node[anchor=north] {\tiny$\xtext$};
\foreach \y/\ytext in {1,5,10}
\draw (1pt,\y cm) -- (-1pt,\y cm) node[anchor=east] {\tiny$\ytext$};
% end grid
% The sign maximized
\node[outer sep=0,
anchor=south west,
opacity=0.5
] at (0,0) {\Huge\color{red!50!white}\usymH{264C}{10cm}};
% All Points
\foreach \px/\py [count=\c] in {%
0.000 /4.000,
1.900 /5.920,
1.900 /5.363,
0.560 /4.000,
1.950 /2.627, % p5
3.230 /4.000, % p6
2.800 /5.350, % p7
1.956 /7.600, % p8
4.550 /10.00, % p9
7.255 /7.500, % p10
6.125 /4.000, % p11
5.700 /0.825, % p12
7.380 /1.260, % p13
7.822 /0.792, % p14
6.200 /0.000, % p15
4.580 /1.350, % p16
5.770 /5.000, % p17
6.521 /7.500, % p18
4.550 /9.380, % p19
2.685 /7.600, % p20
3.550 /5.000, % p21
3.845 /4.000, % p22
1.950 /2.070, % p23
0.000 /4,000 % p24
}{%
\coordinate[mark coordinate,] (p\c) at (\px,\py);
\node[label={[left]{\tiny \c}}]
at (p\c) {\tiny$\times$};% {};%
}
% All Controlpoints 2 at a time
\foreach \cpx/\cpy/\cppx/\cppy [count=\c] in {%
0 /5.15 /0.93 /5.925, % cp1 cpp1
2.15 /5.80 /2.15 /5.50, % cp2 cpp2
1.145 /5.363 /0.56 /4.80, % cp3 cpp3
0.51 /3.28 /1.17 /2.58, % cp4 cpp4
2.725 /2.625 /3.25 /3.35, % cp5 cpp5
3.175 /4.855 /2.82 /5.275, % cp6 cpp6
2.480 /5.800 /2.00 /6.550, % cp7 cpp7
1.956 /8.890 /2.92 /10.00, % cp8 cpp8
6.18 /10.0 /7.25 /8.890, % cp9 cpp9
7.25 /6.15 /6.78 /5.40, % cp10 cpp10
5.125 /1.80 /5.125/1.30, % cp11 cpp11
6.25 /0.48 /6.800/0.75, % cp12 cpp12
7.75 /1.45 /8.025/1.130, % cp13 cpp13
6.99 /0.030 /6.490/0.030, % cp14 cpp14
5.42 /0.000 /4.717/0.485, % cp15 cpp15
4.55 /2.290 /4.825/3.000, % cp16 cpp16
6.520 /6.500 /6.525/7.050, % cp17 cpp17
6.508 /8.600 /5.680/9.379, % cp18 cpp18
3.420 /9.379 /2.690/8.660, % cp19 cpp19
2.688 /7.000 /2.770/6.620, % cp20 cpp20
3.820 /4.350 /3.838/4.167, % cp21 cpp21
3.845 /2.840 /2.925/2.070, % cp22 cpp22
0.950 /2.070 /0.000/2.799 % cp23 cpp23
}{%
\coordinate[mark coordinate,] (cp\c) at (\cpx,\cpy);
\node[red,
%label={[left]{\tiny cp\c}}
] at (cp\c) {\tiny{$\times$}};
% CONTROLPOINT 2
\coordinate[mark coordinate,] (cpp\c) at (\cppx,\cppy);
\node[blue%
%label={[left]{\tiny cpp\c}}
] at (cpp\c) {\tiny{$\times$}};
}
% All Beziercurves and helplines
\foreach \x [evaluate=\x as \xplus using \x+1] in {1,...,23}
{
\draw[blue!50!black,line width=0.05mm] (p\x) .. controls (cp\x) and (cpp\x) .. (p\xplus);
\draw[blue!100!black,line width=0.015mm] (p\x)--(cp\x)--(cpp\x)--(p\xplus);
}
\end{tikzpicture}
\end{document}