在一个螺旋形记录仪中,为了完成一个转弯,轮尺寸和笔画长度之间的比率是多少。即一个螺旋形记录器:
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);
}
答案 0 :(得分:2)
在Spirographs和Hypotrochoids上的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]}]
要计算笔画长度,您需要两条信息。 1)函数的周期和2)整个单一周期内曲线的弧长。
对math.stackexchange上的hypotrochoid期间有一个很好的解释,但在你描述的情况下,这个时期将是2 pi。在更一般的情况下,如果R和r都是rational,则周期将是有限的,并且是2 pi的倍数。
您可以根据参数曲线arc length
的表达式找到笔的绘制长度
用hypotrochoid方程代替(并进行一些简化并假设周期为2 pi),最后得到弧长的表达式:
通过检查,我相信对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