Spirograph:正确的轮比和笔画长度?

时间:2014-03-13 15:41:46

标签: math design-patterns trigonometry

在一个螺旋形记录仪中,为了完成一个转弯,轮尺寸和笔画长度之间的比率是多少。即一个螺旋形记录器:

3边= 1.5:4pi(wheelratio:笔长)
4面= 1.333:6
5面= 2.5:5

a)为什么1.2 / 10和6/2都制作了一个6侧的肺活量计? a)比例是多少?
c)我如何制作octogon螺旋计?

function  spiro (  N:float,k:int ): Vector3//spirograph loop, N=total points in loop, k=current loop
{   //wr,pr=wheel/pen ratio:        5,        3,        4,            6,        6,
    var wr:float[]=new float[10];wr[0]=2.5;wr[1]=1.5;wr[2]=1.33333;wr[3]=1.2;wr[4]=6;
    var pr:float[]=new float[10];pr[0]=5.0;pr[1]=4.0;pr[2]=6.00000;pr[3]=10; pr[4]=2;
    var vr = 4;
    var wheel=wr[vr];
    var theta =(1/N)*Mathf.PI *pr[vr]*k;
    var rtheta =theta*wheel;
    var small = (1-1/wheel);//
    var cx=Mathf.Cos(theta)*small;
    var cz=Mathf.Sin(theta)*small;
    var ex=Mathf.Cos(theta-rtheta)/wheel;
    var ez=Mathf.Sin(theta-rtheta)/wheel;

    return Vector3(cx+ex,0,cz+ez);
}

2 个答案:

答案 0 :(得分:2)

SpirographsHypotrochoids上的MathWorld文章中有一些非常好的图片,可以更容易地描绘正在发生的事情。

特设说明

对于特定数量的“边”,外半径(R)和内半径(r)之间的比率相当容易计算出来。从小圆圈的中心到“笔”的距离决定了形状边缘的“凹凸”。

sides = R / r

查看方程式的形式是有益的,没有c代码“妨碍”请求的八边样本。在Mathematica中可以这样写:

hypotrochoid[R_, r_, h_] := Function[t, {
   (R - r) Cos[t] + h Cos[(R - r) t/r],
   (R - r) Sin[t] - h Sin[(R - r) t/r]
   }]

ParametricPlot[hypotrochoid[1, 1/8, 1/40][t], {t, 0, 2 \[Pi]}]

hypotrochoid with 8 "sides"

笔画长度

要计算笔画长度,您需要两条信息。 1)函数的周期和2)整个单一周期内曲线的弧长。

math.stackexchange上的hypotrochoid期间有一个很好的解释,但在你描述的情况下,这个时期将是2 pi。在更一般的情况下,如果R和r都是rational,则周期将是有限的,并且是2 pi的倍数。

您可以根据参数曲线arc length

的表达式找到笔的绘制长度

arclength equation

用hypotrochoid方程代替(并进行一些简化并假设周期为2 pi),最后得到弧长的表达式:

spirograph arclength

通过检查,我相信对R,r和h有适当的约束,你应该能够得到一个解析解(可能是complete elliptic integrals的一族)。如果你有R,r和h的值,一个好的计算机代数系统(CAS)就能找到解决方案。

无论你是否有CAS,对于近似多边形的肺活量计,弧长方程很简单,可以使用朴素方法(欧拉积分)来解决。

答案 1 :(得分:0)

如果笔位于小轮的边缘,则具有8个边的螺旋形笔的笔线长度是小轮半径的8倍。同样适用于6,5,4等。

多边形也可以这种方式用三角法绘制: http://1ucasvb.tumblr.com/post/42906053623/in-a-previous-post-i-showed-how-to-geometrically

这是功能绘图仪中的演示。 https://functionplotter.com/#W3sidHlwZSI6MCwiZXEiOiIoc2VjKCgyLzYpKmFzaW4oc2luKCg2LzIpKngpKSkpKnNpbih4KSIsImNvbG9yIjoiIzAwMDAwMCJ9LHsidHlwZSI6MTAwMH1d