离散傅里叶变换:绘制你的本轮图
Instructions
1. 使用钢笔工具
在顶部图形视图中绘制一个闭合的环。
2. 然后选择
然后点击 底部的 Plot Epicycles绘制本轮图按钮(位于底部图形视图中)。
3. 选择一个对象,然后使用右侧角落中的菜单 来更改其样式(颜色、大小)。
4. 尽情享受吧!!!Have Fun!!!
注意:您可以下载自己的创作成果。如果您希望与他人分享,可以通过发送推文的方式联系我:@jcponcemath
Note: You can download your creation. If you like to share it, send me a tweet: @jcponcemath
在顶部图形视图中绘制一个闭合的环。
2. 然后选择
然后点击 底部的 Plot Epicycles绘制本轮图按钮(位于底部图形视图中)。
3. 选择一个对象,然后使用右侧角落中的菜单 来更改其样式(颜色、大小)。
4. 尽情享受吧!!!Have Fun!!!
注意:您可以下载自己的创作成果。如果您希望与他人分享,可以通过发送推文的方式联系我:@jcponcemath
Note: You can download your creation. If you like to share it, send me a tweet: @jcponcemath
20260801 修改自:Juan Carlos Ponce Campuzano — 2020年12月6日 - 下午3:00 的 Discrete Fourier Transform: Draw your system of epicycles – GeoGebra
A
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)