Google ClassroomGoogle Classroom
GeoGebraClasse GeoGebra

离散傅里叶变换:绘制你的本轮图

Instructions

1. 使用钢笔工具Toolbar Image 在顶部图形视图中绘制一个闭合的环。 2. 然后选择 Toolbar Image 然后点击 底部的 Plot Epicycles绘制本轮图按钮(位于底部图形视图中)。 3. 选择一个对象,然后使用右侧角落中的菜单 来更改其样式(颜色、大小)。 4. 尽情享受吧!!!Have Fun!!! 注意:您可以下载自己的创作成果。如果您希望与他人分享,可以通过发送推文的方式联系我:@jcponcemath Note: You can download your creation. If you like to share it, send me a tweet: @jcponcemath

Acknowledgements

Special thanks to Thijs who helped me to improve the script and performance. See this thread for details.
cond=true 设置标注(cond,Show stroke) userdraw=true Sx={} buttClear=按钮("Clear") #脚本: 删除(stroke1) 赋值(Sx,{}) 删除(M) 删除(N) 删除(Lm) 删除(t) 赋值(userdraw, false) button4=按钮("Save png") #脚本: 导出图片("filename", "dft-epicycles.png", "scalecm", 1, "dpi", 300, "view", 1) button1=按钮("Setup") #脚本: Sx= 复制自由对象(去除未定义对象(序列(描点(stroke1, k/45), k, 1, 45))) N = 长度(Sx) LN = 序列(N) #=========================================== # Shift zero-frequency component to center of spectrum. #=========================================== Lk = LN-1-商式(N,2) #================================ # Calculate DFT: LX is a list of frequencies #================================ LX = 1/N*映射(总和(映射( (abs(P); arg(P)-2 * pi * k * (n-1) / N), P, Sx, n, LN)), k, Lk) #=============================== # Lj : frequency index sorted by size (abs) #=============================== LAs= 逆序排列(升序排列(映射((abs(X), n), X, LX, n, LN))) Lj = 映射(y(As), As, LAs) #============================= # Use the first M greatest frequencies #============================= M = 滑动条(1, N, 1, 1, 160, false, true, false, false) 赋值(M, N) 设置标注(M, "n") 设置标签模式(M, 9) 设置可见性(M, 1, false) 设置可见性(M, 2, false) Lm = 序列(1, M) Lks= 最前元素(映射(元素(Lk, j), j, Lj), M) LXs= 最前元素(映射(元素(LX, j), j, Lj), M) LRs= 最前元素(映射(x(As), As, LAs), M) #========================== # Plot M epicycles #========================== t = 滑动条(0, 2 * pi, 0.0099, 0.5, 150, false, true, false, false) LC1= 映射(总和(映射((abs(X); arg(X) + k * t), X, 最前元素(LXs, m), k, Lks)), m, Lm ) LC = 合并({(0, 0)}, LC1) Plast = 最后元素(LC) 设置可见性(Plast, 1, true) 设置可见性(Plast, 2, false) 设置图层(Plast, 3) 设置颜色(Plast, "Red") PolyL = 折线(LC) 设置可见性(PolyL, 1, true) 设置可见性(PolyL, 2, false) 设置图层(Plast, 2) Epicycles = 映射(圆周(元素(LC, m), R), m, Lm, R, LRs) 设置可见性(Epicycles, 1, true) 设置可见性(Epicycles, 2, false) 设置图层(Epicycles, 1) #=========================================== # Parametric curve: Inverse of Discrete Fourier Transform #=========================================== PolyOrbit = 多边形(合并(Sx, 最前元素(Sx))) 设置可见性(PolyOrbit , 1, true) 设置可见性(PolyOrbit , 2, false) 设置填充(PolyOrbit, 0) 显示标签(PolyOrbit , false) #========================== # Extras: Settings #========================== 赋值(t,0) 启动动画(t, true) 设置可见性(t, 1, false) 设置可见性(t, 2, true) 设置可见性(LX , 1, false) 设置可见性(LAs, 1, false) 设置可见性(LXs, 1, false) 设置可见性(LC1, 1, false) 设置可见性(LC , 1, false) 设置可见性(LX , 2, false) 设置可见性(LAs, 2, false) 设置可见性(LXs, 2, false) 设置可见性(LC1, 2, false) 设置可见性(LC , 2, false) 显示标签(PolyL, false) 赋值(txtError, false) 赋值(cond, false) 设置显示条件(stroke1, cond)