用Mathematica演示圆的各种摆线——外摆线

时间:2024-10-14 15:06:24

我在《用Mathematica演示圆的各种摆线——内摆线》里面介绍了用Mathematica模拟内摆线的过程,并把摆线归类为内摆线的一种。同样地,眺螗熨膣本文介绍用Mathematica模拟外摆线的过程,并把渐开线归类为外摆线的一种。 为了防止“土地公”剽窃,特意在动态图前面加了各种封面。这样,如果他们盗取的动态图变成静态图,那么就没有什么意义了!把代码放到动态图后面,那么获取代码的方法是把动态图导入到Mathematica里,查看后面几帧。 具体的方法,请参考:《用Mathematica修改图片大小》和《怎么用Mathematica修改gif图片的尺寸》。再用Mathematica提取图片中的文字。

用Mathematica演示圆的各种摆线——外摆线
用Mathematica演示圆的各种摆线——外摆线
用Mathematica演示圆的各种摆线——外摆线
用Mathematica演示圆的各种摆线——外摆线
用Mathematica演示圆的各种摆线——外摆线
用Mathematica演示圆的各种摆线——外摆线
用Mathematica演示圆的各种摆线——外摆线

工具/原料

电脑

Mathematica

渐开线

1、 为什么说圆的渐开线是一种外摆线呢?这是因为直线(半径无限大的癣嗡赧箬圆)只能在其它圆的外面滚动,把直线和圆相切的蔌阪栉酽初始位置的切点视为“被追踪点”,那么“被追踪点”的轨迹就是圆的渐开线(特殊的外摆线)。 设圆半径为1,时间参数为t,那么圆的渐开线方程为: x = cost + tsint, y = sint - tcost;在时间t,直线和圆的切点坐标是(cost,sint),"被追踪点"的位置坐标是(cost+tsint,sint-tcost)。

用Mathematica演示圆的各种摆线——外摆线
用Mathematica演示圆的各种摆线——外摆线

2、 现在来画单位圆和渐开线,单位圆的画法很多:Parametri罕铞泱殳cPlot[{Sin[x], Cos[旌忭檀挢x]}, {x, 0, 2 Pi}, PlotStyle -> {Thick, Blue}];Graphics[{Thick, Blue, Circle[{0, 0}, 1]}];PolarPlot[1, {t, 0, 2 Pi}, PlotStyle -> {Thick, Blue}];ContourPlot[x^2 + y^2 == 1, {x, -1, 1}, {y, -1, 1}, ContourStyle -> {Thick, Blue}]; 渐开线的绘图:ParametricPlot[{Cos[t] + t Sin[t], Sin[t] - t Cos[t]}, {t, 0, 6 Pi},PlotStyle -> {Thick, Blue}] 这里使用ParametricPlot的好处是,它能够自动调整绘图区域。

用Mathematica演示圆的各种摆线——外摆线

3、 把单位圆和渐开线画在一起,可以用Show,但这里推荐另一个命筠沭鱿漆令函数Graphics,因为它会自动忽略坐标轴。 先把图形转换成数据,运行下面的代码:单位圆 = P锾攒揉敫arametricPlot[{Sin[x], Cos[x]}, {x, 0, 2 Pi},PlotStyle -> {Thick, Red}][[1]];渐开线 = ParametricPlot[{Cos[t] + t Sin[t], Sin[t] - t Cos[t]}, {t, 0,6 Pi}, PlotStyle -> {Thick, Blue}][[1]]; 再用Graphics统一绘图:Graphics[{单位圆, 渐开线}]

用Mathematica演示圆的各种摆线——外摆线

4、 互动,代码见下面的动态图: 代码里面的a,可以手动赋值; 渐开线一开始是蓝色,然后被渐渐覆盖上红色; 为了防止“土地公”剽窃,特意在动态图前面加了个封面。这样,如果他们盗取的动态图变成静态图,那么就没有什么意义了!获取代码的方法是把动态图导入到Mathematica里,然后查看后面几帧,具体步骤请看《用Mathematica提取图片中的文字》。

用Mathematica演示圆的各种摆线——外摆线
用Mathematica演示圆的各种摆线——外摆线

5、 我们把a赋值为36,用colorfunction加上色彩,改变线的粗细度,看看是什么情形! 有点像是雷达扫描图像,由近及远; 由于图形尺寸小,所以看起来有点密集; 这个图形,看着像是Archimedean螺线,那么二者是否是同一个东西呢?

用Mathematica演示圆的各种摆线——外摆线
用Mathematica演示圆的各种摆线——外摆线

外摆线

1、 圆A在圆B的外部滚动,那么圆A上的任意定点的轨迹是外摆线,这个点就视作“被追踪点”。同“内摆线”类似,这里仍旧设定圆B为红色、半径为R,圆A为蓝色、半径为丨r丨,但是r的值取负数,且绘制圆A的代码里面的半径改为-r(或Abs[r]):Circle[{(-r + R) Cos[t/R], (-r + R) Sin[t/R]}, -r] 代码在动态图里面!

用Mathematica演示圆的各种摆线——外摆线

2、 把不同的情形,各导出个动态图: 图一里面R = 1, r = -1; 图二里面R = 2, r = -1; 图三里面R = 1 ,r = -2。 其余的,大家可以自己尝试。要注意参数的范围!代码在动态图后面的后面!

用Mathematica演示圆的各种摆线——外摆线
用Mathematica演示圆的各种摆线——外摆线
用Mathematica演示圆的各种摆线——外摆线
用Mathematica演示圆的各种摆线——外摆线

外摆线的拓广

1、 如果“被追踪点”位于圆A的内部或外部,那么它在时间t的位置坐标需要重新下定义,同时还要引进一个参数d(“被追踪点”到圆A的圆心的距离):pt[t_, r_, d_] :=lctr[t, r] + RotationMatrix[2 Pi - t/r].{d r Cos[t/R], d r Sin[t/R]} 其中,d>0且d≠1。 代码在动态图里面,注意代码里的Abs[r]。

用Mathematica演示圆的各种摆线——外摆线

2、 始终赋值R=3,当d=2/3、r=-1、参数t变化时,动态图如下面图一;当d=3/2、r=-1、参数t变化时,动态图如下面图二;当t=6π,r=-1、参数d变化时,动态图如图三; 特别注意:当t=12π,d=3/2,r从2减为-2的动态图,当r>0时,“外摆线”变成了“内摆线”,当r=0时,代码不能运行。

用Mathematica演示圆的各种摆线——外摆线
用Mathematica演示圆的各种摆线——外摆线
用Mathematica演示圆的各种摆线——外摆线
用Mathematica演示圆的各种摆线——外摆线
© 手抄报圈