我想在 Latex 中制作以下最速降线图片:
我在这个网站上搜索了可以修改的极速降线插图,结果发现:
在多次尝试修改代码失败后(尽管这是我第一次弄清楚如何运行 Metapost 代码),它决定发布这个问题。任何帮助我制作第一张图片(最好是我熟悉的 Latex)的帮助都将不胜感激。
谢谢。
答案1
这是我以前回答的更现代版本,展示了如何绘制其他曲线的近似值。这包含在luamplib
您需要用 编译它的内容中lualatex
。有关 Metapost 的更多信息,请关注此链接。
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
pair A, B;
A = (-1,1) scaled 300;
B = origin;
draw A -- (xpart A, ypart B) -- B withpen pencircle scaled 1/4 withcolor 3/4 white;
path p[];
p1 = A -- B; % line
% circular
z0 = (xpart B, ypart A);
p2 = quartercircle rotated 180 scaled 2 abs (z0-B) shifted z0;
% parabola f = x^2, f' = 2x
p3 = A{1,-2} ... (xpart 1/2[A, B], ypart 3/4[A, B]){1,-1} ... B {1, 0};
% sixth degree f = x^6, f' = 6x^5
p4 = A{1,-6} ... (xpart 1/2[A, B], ypart 63/64[A, B]){1, -6/32} ... B {1, 0};
r = 172; % <- a magic number...
p5 = (origin for t=5 step 5 until 180: -- (0,r) rotated t shifted ((t/57.29578,-1) scaled r) endfor)
shifted A cutafter ((up--down) scaled 10 shifted B);
drawoptions(withcolor 2/3 red); draw p1; dotlabel.urt("Line", point 1/4 of p1);
drawoptions(withcolor 1/2 green); draw p2; dotlabel.urt("Circle", point 1 of p2);
drawoptions(withcolor 1/4[red, green]); draw p3; dotlabel.urt("Parabola", point 1/2 of p3);
drawoptions(withcolor 3/4[red, green]); draw p4; dotlabel.llft("Sixth degree", point 3/4 of p4);
drawoptions(withcolor 1/2 blue); draw p5; dotlabel.urt("Cycloid", point 22 of p5);
drawoptions();
dotlabel.ulft("$A$" , A);
dotlabel.urt("$B$", B);
endfig;
\end{mplibcode}
\end{document}
笔记
让摆线穿过 B 点需要反复试验,因此中间有一个神奇的数字 172。如果我能想到更可靠的方法,我会更新此内容。
为了绘制抛物线和
x^6
直线的近似值,我只需沿它们选取三个点并添加适当的方向语法,{x,y}
以便曲线朝正确的方向运行。要获得更逼真的线条,您必须添加更多点,但我认为这里的草图就没问题。