#recommend #web 可配合 canIUse.com https://moonvy.com/blog/post/2022/next-generation-Image-format-2022/
背景:对xy-color像素图的编码,无关编程接口
概况:无损压缩上简单图片 WebP2 (cwebp)更好,复杂 JPEGXL (jxl)更好
编码速度上jxl最快。AVIF 是继承于 VP9 视频的格式,一些格式有渐进清晰加载和快速修改功能
https://cn.bing.com/images/search?q=知更鸟摄影
背景:对xy-color像素图的编码,无关编程接口
概况:无损压缩上简单图片 WebP2 (cwebp)更好,复杂 JPEGXL (jxl)更好
编码速度上jxl最快。AVIF 是继承于 VP9 视频的格式,一些格式有渐进清晰加载和快速修改功能
https://cn.bing.com/images/search?q=知更鸟摄影
Moonvy
JPEG XL、AVIF、WebP 2 · 次世代图片格式评测
#learn #math #signal 编程里处处是”速率“曲线:两点xy轴位移/颜色盘渐变、下落的重力速度、弹球的碰边反馈 。程序负责投喂边界情况(关键帧),可重绘计算谁做?浮点函数0.0。
看起来非常 fancy 的效果,原理却非常简单。 jQuery 的 swing 缓动即 sin(t)/2+0.5 ,t=0~1,将原 x(0~2pi)y(-1~1) 缩小平移到 y(0~1)
正余弦(co?sine)是手画圆时的xy。180deg=1pi 弧度(rad),随弧度t(0=12点方向)上升而圆心距y上升。sin与x=0轴在2pi的周期有3个交点,正好是画笔竖线能连圆心的弧度:0,180,360deg; 0,1pi,2pi rad 。0~1pi间俩山坡式的波动、与cos(t) 变化率的互补也揭示了1/4圆的对称性,完美的图形。 物理 x=.25pi 时 sinx+cosx 动量和最大表明 45deg 投掷距离最长(请玩 funcplot.com
最常使用的是一些缓动(非线性)动画,它们把 t=0~1 重新分配,一些部位停留(ease)更长,Web 使用的是3次方贝兹(cubic bezier)-由4点组成自由调整的1段线,
在2折线(A形)上,p0~p1 生成1点T0,T0~T(p1~p2) 生成当前t的点T2,此点构线是平滑的曲线。
与之同类的 NURBS 曲面替代三/四角面点阵(Mesh)广泛应用于3D建模
修复开头的
点参数式 (2sint,cost) t=0~2pi 绘制一个宽椭圆,隐函数 length(p-P)-l 的符号表明P 离圆心p的距离,=0时是圆的边(stroke),<0是圆的色(fill),-l 是圆心p ,在散点并行计算 #GLSL 里称为 signed dist func
计算有许多种写法,f(t)/2+.5 即 (f(t)+1)/2 , P(x,y) plusRL=x+lsinr,y+lcosr (r=0~2pi)可以写成 vec2(x,y)+l*rotate(r) 的形式, for(i in 1..3)acc*=5 可以写成 pow(5,3) 即 5**3 ,acc+=i*3+1 求和可拆为 3+6+9+1*3 即 (1~3).reduce{a*b}*3+3 的阶乘倍数,积之和:多项等式可写明正负号,移项, wx+w1x1 即 dot((w,x),(w1,x1)) ,移动的加权求和就是卷积(convolve)
声音是线(采样率npSec,声道量nChan,dtype,n)、像素图也可按函数的方法过滤RGB值通道(channel),求亮度灰度(lum)、边缘检测,通过窗口(window)模糊锐化
图片也是信号,听起来很奇怪,因为图片有2D宽度有xy座标,怎么能线性处理?确实,信号处理有 1D 2D 之分,一些算式(2D Sobel边缘,正右下右平滑补间,平面几何)是特有的,但xy座标也=rl圆心座标,哈哈镜扭曲和漩涡扭曲 ,也是信号-xy之上也有曲线。
声音和图形都能“混成(mix)”,使用的数学式都是对每采样像素/震点 (a+b) ,并且都有 High/Band/Low-Pass-Filter 区间滤波,线条主宰着图像的处理和绘制
波形是震子的震幅y随时间x的变化,既是震动就有周期T.f(x)=f(x+T),f=sin或cos则T=2pi。周期小频率快音高大、幅度高能量大响度大,白噪声是包含所有频谱的信号,用于模拟自然烟雾水流的 Perlin noise
画家算法(左面 -zy轴远先近后)用正交投影在2D画布上绘制3D点集,可以在y轴旋转每点(面向xz平面:x=xcosr+zsinr,y=y)
xy点的连线路径也不例外,我们给Path2D加一个t=”z深“维度。3D版sin波从 正面xy 看起来像一个圆,而从 左侧面zy 它就像普通sin线。手绘都近似圆圈,只是在某一个t 其y比正弦波加了点小波动,从 顶面zx 看x也同样,把这个随t+移动而不像sin螺旋了的画笔变成不同频率和幅度sin的叠加,每个 sin 就是”小圆圈“
物理命名法已经能按a-z的编号层叠标注所有变量的性质, 使我能更好的提出子程序、更改API
我更喜欢从集合(如UI父元素,容器)而非单项的视角编程,能通过举例边角情况理解从计算反着来的性质过滤,计算机也可以接受 sympy.org 不直的计算;就像编译原理能通过位置综合推导/检查型参、位置统一分配变量名、自动回调+函断续实现async
计算机的能力从来不是“单向” “单次”的。它与计算器有别
我看到了比无UI的API,更有趣的东西,它们才完成了真正的实事,不停留在一两个技术名词。系统的,反而易懂
有别于单次调用的设计,才会更好玩不是吗
回望当初,为一些能自动代码生成的模板而敲键盘、为绑定utils 而写UI, #Web 真的教会了我太多,从元编程、GUI的架构到编译原理和计算器的关系,到人脸识别的数据、canvas,WebAudio与WebGL 乃至WASM跨平台,这是 Python 的单一API 甚至 Java 等要操心F5刷新外无聊鼠标的语言所不能给我的。从那些C一样的语言我只看到了语法模式和API名词,而从Web我找到了开发的实质—写前就知道算法结果是啥样
看起来非常 fancy 的效果,原理却非常简单。 jQuery 的 swing 缓动即 sin(t)/2+0.5 ,t=0~1,将原 x(0~2pi)y(-1~1) 缩小平移到 y(0~1)
正余弦(co?sine)是手画圆时的xy。180deg=1pi 弧度(rad),随弧度t(0=12点方向)上升而圆心距y上升。sin与x=0轴在2pi的周期有3个交点,正好是画笔竖线能连圆心的弧度:0,180,360deg; 0,1pi,2pi rad 。0~1pi间俩山坡式的波动、与cos(t) 变化率的互补也揭示了1/4圆的对称性,完美的图形。 物理 x=.25pi 时 sinx+cosx 动量和最大表明 45deg 投掷距离最长(请玩 funcplot.com
最常使用的是一些缓动(非线性)动画,它们把 t=0~1 重新分配,一些部位停留(ease)更长,Web 使用的是3次方贝兹(cubic bezier)-由4点组成自由调整的1段线,
animation:1s 固定P0=0,P1=1 能调P1,P2 两点。而绘制里常见2次方(quadratic)贝兹是3点xy共同插值式—bzr=(ps,t)=>{let T=([x,y],[x1,y1])=>[x+t*(x1-x),y+t*(y1-y)] //lerp(mix ab@t). N次方 de Casteljau 法
return n(ps)==1?ps[0] : bzr(ps.slice(0,-1).map((x,i)=>T(x,ps[i+1]) ),t) //所有左的P都*t 至Plast
}
3点够2折线。在1折线上 T(p0,p1) 即"lerp" 定义了补间xy: a+t(b-a) 即 (1-t)a+tb ,想象a是电池的绿条,会慢慢下滑。xy轴t=0~1的滑动即运动轨迹。 采样N点的封闭路径构成几何,等位点T(a[i],b[i]) 补间即形变(morph)在2折线(A形)上,p0~p1 生成1点T0,T0~T(p1~p2) 生成当前t的点T2,此点构线是平滑的曲线。
bzr(ps,t) 里 ~(p0~p2, p1~p2) 先将p2连另两点得两T点,即降为1次bez,插值p01两点即得2次贝兹曲线t% 路程的xy。几何计算一般可缓存与之同类的 NURBS 曲面替代三/四角面点阵(Mesh)广泛应用于3D建模
修复开头的
swing=(1+ 0-cos(x*pi))/2 或 (1-sin((.5+x)*pi))/2 或(1-sin(xpi-11))/2,因为y(0)=0且 0~1 间曲线应是单调增。cos(0)是1 但其0~pi 正好符合单调减,无需x+?。sin(.5pi*x) 是个缓出曲线点参数式 (2sint,cost) t=0~2pi 绘制一个宽椭圆,隐函数 length(p-P)-l 的符号表明P 离圆心p的距离,=0时是圆的边(stroke),<0是圆的色(fill),-l 是圆心p ,在散点并行计算 #GLSL 里称为 signed dist func
计算有许多种写法,f(t)/2+.5 即 (f(t)+1)/2 , P(x,y) plusRL=x+lsinr,y+lcosr (r=0~2pi)可以写成 vec2(x,y)+l*rotate(r) 的形式, for(i in 1..3)acc*=5 可以写成 pow(5,3) 即 5**3 ,acc+=i*3+1 求和可拆为 3+6+9+1*3 即 (1~3).reduce{a*b}*3+3 的阶乘倍数,积之和:多项等式可写明正负号,移项, wx+w1x1 即 dot((w,x),(w1,x1)) ,移动的加权求和就是卷积(convolve)
声音是线(采样率npSec,声道量nChan,dtype,n)、像素图也可按函数的方法过滤RGB值通道(channel),求亮度灰度(lum)、边缘检测,通过窗口(window)模糊锐化
图片也是信号,听起来很奇怪,因为图片有2D宽度有xy座标,怎么能线性处理?确实,信号处理有 1D 2D 之分,一些算式(2D Sobel边缘,正右下右平滑补间,平面几何)是特有的,但xy座标也=rl圆心座标,哈哈镜扭曲和漩涡扭曲 ,也是信号-xy之上也有曲线。
声音和图形都能“混成(mix)”,使用的数学式都是对每采样像素/震点 (a+b) ,并且都有 High/Band/Low-Pass-Filter 区间滤波,线条主宰着图像的处理和绘制
波形是震子的震幅y随时间x的变化,既是震动就有周期T.f(x)=f(x+T),f=sin或cos则T=2pi。周期小频率快音高大、幅度高能量大响度大,白噪声是包含所有频谱的信号,用于模拟自然烟雾水流的 Perlin noise
画家算法(左面 -zy轴远先近后)用正交投影在2D画布上绘制3D点集,可以在y轴旋转每点(面向xz平面:x=xcosr+zsinr,y=y)
xy点的连线路径也不例外,我们给Path2D加一个t=”z深“维度。3D版sin波从 正面xy 看起来像一个圆,而从 左侧面zy 它就像普通sin线。手绘都近似圆圈,只是在某一个t 其y比正弦波加了点小波动,从 顶面zx 看x也同样,把这个随t+移动而不像sin螺旋了的画笔变成不同频率和幅度sin的叠加,每个 sin 就是”小圆圈“
物理命名法已经能按a-z的编号层叠标注所有变量的性质, 使我能更好的提出子程序、更改API
我更喜欢从集合(如UI父元素,容器)而非单项的视角编程,能通过举例边角情况理解从计算反着来的性质过滤,计算机也可以接受 sympy.org 不直的计算;就像编译原理能通过位置综合推导/检查型参、位置统一分配变量名、自动回调+函断续实现async
计算机的能力从来不是“单向” “单次”的。它与计算器有别
我看到了比无UI的API,更有趣的东西,它们才完成了真正的实事,不停留在一两个技术名词。系统的,反而易懂
有别于单次调用的设计,才会更好玩不是吗
回望当初,为一些能自动代码生成的模板而敲键盘、为绑定utils 而写UI, #Web 真的教会了我太多,从元编程、GUI的架构到编译原理和计算器的关系,到人脸识别的数据、canvas,WebAudio与WebGL 乃至WASM跨平台,这是 Python 的单一API 甚至 Java 等要操心F5刷新外无聊鼠标的语言所不能给我的。从那些C一样的语言我只看到了语法模式和API名词,而从Web我找到了开发的实质—写前就知道算法结果是啥样
developer.mozilla.org
高级动画 - Web API 接口参考 | MDN
在上一章,我们制作了基本动画以及逐步了解了让物件移动的方法。在这一部分,我们将会对运动有更深的了解并学会添加一些符合物理的运动以让我们的动画更加高级。
duangsuse::Echo
#learn #math #signal 编程里处处是”速率“曲线:两点xy轴位移/颜色盘渐变、下落的重力速度、弹球的碰边反馈 。程序负责投喂边界情况(关键帧),可重绘计算谁做?浮点函数0.0。 看起来非常 fancy 的效果,原理却非常简单。 jQuery 的 swing 缓动即 sin(t)/2+0.5 ,t=0~1,将原 x(0~2pi)y(-1~1) 缩小平移到 y(0~1) 正余弦(co?sine)是手画圆时的xy。180deg=1pi 弧度(rad),随弧度t(0=12点方向)上升而圆心距y…
#WIP 作者正在学习傅里叶变换 😓 感谢xecades大佬的博客。 实在不好在tg打太长的草稿。 语言有问题请大家积极报告
今天本来说还得写篇文评知乎民科的,以及提纲2月的动画礼物(草
话说xecades大佬居然真的是用 offset-path 来获取SVG折线点……天哪,我还以为不能呢,offsetLeft 好像确实变了,当时我以为不能(忘记为啥了)就找到了 SVGPath 的 TotalLen/PointAtLen (这里Xe顺带 -W/2 居中了一下,style里0点也加上了。transferSVG 其实就是 DOMParser 的工作,以JQ div.inHTML= 的形式做了.
https://github.com/Xecades/Homepage/blob/main/lab/Fourier/js/svg.js#L31
开始我以为d3.js 是webgl库,后来看见Xe好像是用它做JQ append.attr调用链一样,绘制是纯CSS的(呃不对,好像有 scale(slider?) 和 trace path... 👀
隐函数搜索真的属于谁都做过了 😂Xe大佬也写过图形计算器,nablaF
https://github.com/Xecades/Homepage/blob/9f8a5724690303b556d9953860087564180dd419/lab/Function/script.js#L59
今天本来说还得写篇文评知乎民科的,以及提纲2月的动画礼物(草
话说xecades大佬居然真的是用 offset-path 来获取SVG折线点……天哪,我还以为不能呢,offsetLeft 好像确实变了,当时我以为不能(忘记为啥了)就找到了 SVGPath 的 TotalLen/PointAtLen (这里Xe顺带 -W/2 居中了一下,style里0点也加上了。transferSVG 其实就是 DOMParser 的工作,以JQ div.inHTML= 的形式做了.
https://github.com/Xecades/Homepage/blob/main/lab/Fourier/js/svg.js#L31
开始我以为d3.js 是webgl库,后来看见Xe好像是用它做JQ append.attr调用链一样,绘制是纯CSS的(呃不对,好像有 scale(slider?) 和 trace path... 👀
隐函数搜索真的属于谁都做过了 😂Xe大佬也写过图形计算器,nablaF
https://github.com/Xecades/Homepage/blob/9f8a5724690303b556d9953860087564180dd419/lab/Function/script.js#L59
duangsuse::Echo
#learn #math #signal 编程里处处是”速率“曲线:两点xy轴位移/颜色盘渐变、下落的重力速度、弹球的碰边反馈 。程序负责投喂边界情况(关键帧),可重绘计算谁做?浮点函数0.0。 看起来非常 fancy 的效果,原理却非常简单。 jQuery 的 swing 缓动即 sin(t)/2+0.5 ,t=0~1,将原 x(0~2pi)y(-1~1) 缩小平移到 y(0~1) 正余弦(co?sine)是手画圆时的xy。180deg=1pi 弧度(rad),随弧度t(0=12点方向)上升而圆心距y…
😢逗号真的太可怕了。 旋转(t,(A,B)=>[ x+=Q(c.wz)+ A*d, y+=Q(l)*d, i*B*d, Q(S)+S/2-1 ,我吃饭的路上一直思考[A*x,B*y,z,img] 为啥自z轴而非y旋转点的xy,却能正常渲染,遂猜测 (求和(xz),y) 是Z-up 3D系的Y旋转公式(z=y了属于是),但解释不了其中y为何没有变,因生成树枝和整体旋转本应是同公式,回来验证时发现最初少看了逗号……白想了俩小时! 🤪 以后真的不想看见这种迫真低行数圣诞树惹
Anonymous Poll
40%
好耶,易读了
0%
坏耶,不酷了
60%
什么鬼问题
Forwarded from 层叠 - The Cascading
duangsuse::Echo
😢逗号真的太可怕了。 旋转(t,(A,B)=>[ x+=Q(c.wz)+ A*d, y+=Q(l)*d, i*B*d, Q(S)+S/2-1 ,我吃饭的路上一直思考[A*x,B*y,z,img] 为啥自z轴而非y旋转点的xy,却能正常渲染,遂猜测 (求和(xz),y) 是Z-up 3D系的Y旋转公式(z=y了属于是),但解释不了其中y为何没有变,因生成树枝和整体旋转本应是同公式,回来验证时发现最初少看了逗号……白想了俩小时! 🤪 以后真的不想看见这种迫真低行数圣诞树惹
#cg 正交与透视变换 https://zhuanlan.zhihu.com/p/144329075 lrtb 是正方体四面, nf 是正背.. 还是 ft bk 好吧
https://zhuanlan.zhihu.com/p/410548236 同
https://zhuanlan.zhihu.com/p/111573239 Sympy 真的好厉害啊,可是 simplify 估计不如 Wolfram Mathmatics 吧 🤪
https://zhuanlan.zhihu.com/p/410548236 同
https://zhuanlan.zhihu.com/p/111573239 Sympy 真的好厉害啊,可是 simplify 估计不如 Wolfram Mathmatics 吧 🤪
知乎专栏
计算机图形学二:视图变换(坐标系转化,正交投影,透视投影,视口变换)
视图变换(Viewing Transformation)我们可以这样来描述视图变换的任务:将虚拟世界中以(x,y,z)为坐标的物体变换到 以一个个像素位置(x,y) 来表示的屏幕坐标系之中(2维),这确实是一个较为复杂的过程,但是整个过…
#math 感觉太失败了,但…我依然已经重写
没想到傅里叶公式如此简单,但是啊但是
感觉数学和工程理论差异蛮大的,对我们而言连续(\int)根本是不存在的,一切计算都是有精度按步长积分,Sigma(Sum) 符号看起来也很多余,我们根本搞不清为什么有两种版本的公式,在理论上有何分别。虚数就更离奇,它的vec2乘法是 xX+yY,xY-yX ,别人说复数虚数(r,i)*i 的物理意义是旋转90度,也就是生成t的螺旋,我能不能无视虚数平面,只用笛卡尔两系计算呢?
(x+iy)*(cosθ+isinθ)即e^it 一个欧拉符号加虚数乘法能表示旋转,那FFT公式 C_i=dt*Sum[t] f(t)e^ti 里就是转f(t)度了?
我试着在支持(a,b)变量的 funcplot.com 画了下,发现这个乘法完全不像在直座标垂直的样子
没想到傅里叶公式如此简单,但是啊但是
感觉数学和工程理论差异蛮大的,对我们而言连续(\int)根本是不存在的,一切计算都是有精度按步长积分,Sigma(Sum) 符号看起来也很多余,我们根本搞不清为什么有两种版本的公式,在理论上有何分别。虚数就更离奇,它的vec2乘法是 xX+yY,xY-yX ,别人说复数虚数(r,i)*i 的物理意义是旋转90度,也就是生成t的螺旋,我能不能无视虚数平面,只用笛卡尔两系计算呢?
(x+iy)*(cosθ+isinθ)即e^it 一个欧拉符号加虚数乘法能表示旋转,那FFT公式 C_i=dt*Sum[t] f(t)e^ti 里就是转f(t)度了?
我试着在支持(a,b)变量的 funcplot.com 画了下,发现这个乘法完全不像在直座标垂直的样子
duangsuse::Echo
#math 感觉太失败了,但…我依然已经重写 没想到傅里叶公式如此简单,但是啊但是 感觉数学和工程理论差异蛮大的,对我们而言连续(\int)根本是不存在的,一切计算都是有精度按步长积分,Sigma(Sum) 符号看起来也很多余,我们根本搞不清为什么有两种版本的公式,在理论上有何分别。虚数就更离奇,它的vec2乘法是 xX+yY,xY-yX ,别人说复数虚数(r,i)*i 的物理意义是旋转90度,也就是生成t的螺旋,我能不能无视虚数平面,只用笛卡尔两系计算呢? (x+iy)*(cosθ+isinθ)即e^it…
现在算是明白了3D螺旋是怎么靠iter=0~傅里叶次数,t=0~1 旋转的,但根本不知道虚数(complex)这东西有啥原理
看起来根本不是垂直或物理变形这么简单(主要是这里没用虚数单位i.. 两个点弄出的图形在0,0 都很奇异,想必得设计更3D的图表才能明白虚数究竟是怎么计算傅里叶变换的 🤪
(注:以下FFT全部指代普通傅里叶变换
哦……我想起来了, i*t 之所以在 cos(2pi*it) 的周期函数上也有用是因为 cos就不是从xy看的.. 从ty 看,即cos(ix) 就是增加了倍频,因此更大迭代次数考虑更广频谱 😓
不考虑虚数的作用,Fourier 就是细分一个螺旋,低iter考虑低频(较光滑的折线),虚数乘f(t) 来求差,加权dt 求和来算频段的震幅,呃.. 和柱状图(groupBy)区别挺大,就是个求和 😂 ,这是2D FFT 所以e是cos,sin的+虚数乘,1D就是sin吧
Xecades 的代码包含了DFFT和IFFT(正逆运算),我给忘了,以为只有绘制在求动量和=t%点,其实 Cs[i]*e^it 也是实现的一部分,它把震幅*频率,这个t 当然和FFT公式的t是一个,只是由setInterval 提供
ref:
https://zhuanlan.zhihu.com/p/198910715
https://www.cnblogs.com/h2zZhou/p/8405717.html 方波与海螺图
https://blog.csdn.net/youcans/article/details/122614107 Py opencv DFFT 灰度图的色彩频谱
https://zhuanlan.zhihu.com/p/43780991 matlab 傅里叶级数(离散到连续
另外在中文网站上一两次看过FFT可视化,学会了我就是大佬(啊不 🤪
看起来根本不是垂直或物理变形这么简单(主要是这里没用虚数单位i.. 两个点弄出的图形在0,0 都很奇异,想必得设计更3D的图表才能明白虚数究竟是怎么计算傅里叶变换的 🤪
C_i=dt*Sum[t] f(t)e^-it (一个震幅圆圈)在再乘 e^iT 后就得到震幅的动量(和频率联系),动量的和是t%的路径上点,代码好写,但这是什么鬼,e 这个欧拉符号和虚数是怎么回事,为什么没用几何计算 🤔艹(注:以下FFT全部指代普通傅里叶变换
哦……我想起来了, i*t 之所以在 cos(2pi*it) 的周期函数上也有用是因为 cos就不是从xy看的.. 从ty 看,即cos(ix) 就是增加了倍频,因此更大迭代次数考虑更广频谱 😓
不考虑虚数的作用,Fourier 就是细分一个螺旋,低iter考虑低频(较光滑的折线),虚数乘f(t) 来求差,加权dt 求和来算频段的震幅,呃.. 和柱状图(groupBy)区别挺大,就是个求和 😂 ,这是2D FFT 所以e是cos,sin的+虚数乘,1D就是sin吧
Xecades 的代码包含了DFFT和IFFT(正逆运算),我给忘了,以为只有绘制在求动量和=t%点,其实 Cs[i]*e^it 也是实现的一部分,它把震幅*频率,这个t 当然和FFT公式的t是一个,只是由setInterval 提供
ref:
https://zhuanlan.zhihu.com/p/198910715
https://www.cnblogs.com/h2zZhou/p/8405717.html 方波与海螺图
https://blog.csdn.net/youcans/article/details/122614107 Py opencv DFFT 灰度图的色彩频谱
https://zhuanlan.zhihu.com/p/43780991 matlab 傅里叶级数(离散到连续
另外在中文网站上一两次看过FFT可视化,学会了我就是大佬(啊不 🤪
知乎专栏
通过GH再现傅里叶变换可视化
最近几个月我陷入了波函数坍塌(WFC)的大坑,总觉得它能在设计上能大有一番应用,但尝试的过程并不是很顺利,重新学习数学和物理的过程更是举步维艰。 在这个过程中我接触到了这个对于理工人而言很熟悉但对于建筑…
现在代码怎么写已经很清楚了,虚数乘具体是什么不重要,反正知道它能算频段的震幅就行了,3D 螺旋也不需要了,知道 t=0~1 能拿圆圈点算距离求震幅和,能回归波形 就行 🤪 工程就是这么随意
Xe大佬的原版改过两次,7个月前他把canvas实现改成了d3+svg实现,一些桥段不太好,比如比率的处理 有点为用d3而用的意思了... 跑的时候我风扇呼呼地转,估计都在 parse SVG字符串 🌚 (我觉得一些重复表达式,虽然加了loadFile功能,真的还不如第一次,尤其是曾经点绘制 XML绑定写了一大堆..),事成之后我去提建议(不过人家还在上高中呢
我昨天为还原那个屏幕-数学空间转换 还特意写了个:
现在想想真是尴尬,我自己其实是最煞有介事的。Vec2的完整角度距离定义 这个FFT根本不会用,反而是虚数... 它真的有画 Mandelbrot 分形的能力 😂
Xe大佬的原版改过两次,7个月前他把canvas实现改成了d3+svg实现,一些桥段不太好,比如比率的处理 有点为用d3而用的意思了... 跑的时候我风扇呼呼地转,估计都在 parse SVG字符串 🌚 (我觉得一些重复表达式,虽然加了loadFile功能,真的还不如第一次,尤其是曾经点绘制 XML绑定写了一大堆..),事成之后我去提建议(不过人家还在上高中呢
我昨天为还原那个屏幕-数学空间转换 还特意写了个:
lerp=([a,b])=>t=>a+t*(b-a)
kConv=([a,b],AB)=>t=>AB((t-a)/(b-a))
spaceScale=(e,kx)=>{
let {x,y,width:w,height:h}=e.getClientRects()[0],ky,... 当然我的风格用函数值怎么写都更短就是了 😢现在想想真是尴尬,我自己其实是最煞有介事的。Vec2的完整角度距离定义 这个FFT根本不会用,反而是虚数... 它真的有画 Mandelbrot 分形的能力 😂
Forwarded from Solidot
朝鲜互联网疑似因网络攻击下线
2022-01-27 23:33
监视朝鲜网站和电邮服务器的安全研究员 Junade Ali 称 1 月 25 日朝鲜互联网 疑似因 DDoS 攻击下线。在攻击的高峰期,进出朝鲜的流量都停滞,这一情况持续了数小时,之后访问部分恢复。这是几周内朝鲜网络第二次中断,上一次是在 1 月 14 日。朝鲜的互联网访问受到严格限制,估计只有极少的一部分人能直接访问全球互联网。
2022-01-27 23:33
监视朝鲜网站和电邮服务器的安全研究员 Junade Ali 称 1 月 25 日朝鲜互联网 疑似因 DDoS 攻击下线。在攻击的高峰期,进出朝鲜的流量都停滞,这一情况持续了数小时,之后访问部分恢复。这是几周内朝鲜网络第二次中断,上一次是在 1 月 14 日。朝鲜的互联网访问受到严格限制,估计只有极少的一部分人能直接访问全球互联网。
#Java #android #reveng 其实Rhino 等利用了Java代码生成但在android兼容也是用这种临时去dx翻译
https://t.me/Ralphonograph/4393 #go SVC模板
https://t.me/Ralphonograph/4393 #go SVC模板
Telegram
Phonograph
前前后后用 golang 写了十来个后端项目,大小不一;最近把自己在 golang 后端开发中用到的工具链整理了一下,开源了一个模板仓库,欢迎大家使用。
只要你对相关工具链有一些了解,拉下来这个模板后就能快速上手业务逻辑的编写,免除在初始阶段写重复代码的烦恼。模板包含 ORM、HTTP 框架、配置文件管理、日志管理、API 文档生成的解决方案,满足小型后端开发的需求。
https://github.com/RalXYZ/go-svc-tpl
只要你对相关工具链有一些了解,拉下来这个模板后就能快速上手业务逻辑的编写,免除在初始阶段写重复代码的烦恼。模板包含 ORM、HTTP 框架、配置文件管理、日志管理、API 文档生成的解决方案,满足小型后端开发的需求。
https://github.com/RalXYZ/go-svc-tpl
duangsuse::Echo
#WIP 作者正在学习傅里叶变换 😓 感谢xecades大佬的博客。 实在不好在tg打太长的草稿。 语言有问题请大家积极报告 今天本来说还得写篇文评知乎民科的,以及提纲2月的动画礼物(草 话说xecades大佬居然真的是用 offset-path 来获取SVG折线点……天哪,我还以为不能呢,offsetLeft 好像确实变了,当时我以为不能(忘记为啥了)就找到了 SVGPath 的 TotalLen/PointAtLen (这里Xe顺带 -W/2 居中了一下,style里0点也加上了。transferSVG…
微分-积分 是对稠密(无限可分)区间a~b 统求计算的方法,求圆周率:圆内接N边形,各边长和=圆周长,精度=1/边数。 当然周长和边长直接对应,所以不需要求和再/切分量(即*dt) 。(a*dt+b*dt+..)=(a+b+)*dt
因为是稠密,不能[1,2,3].sum() ,该
导数正是这种统求计算的产物,有了导数就能求函数线的大小极值—物理”瞬时(无穷小,不是负无穷.dt时间内)“速度,只有导=0 才是极值点,当然除非y=常数 不会精确=0 的.. 人工神经网络(加权求和y=激活f(wx) 的层级链)的梯度下降学习就是给定xy看f梯度和误差函数调w (及层误差反向传递),这个激活函数必须可导
这个指数函数的导是通过y+dy / x+dx 代入化简得来的,2x 是上升曲线,正好配对了指数函数的越升越快
微积分是互逆运算,一个是求速率,一个是求距离,因为对非线性(y=x)运动不能平均有这一出,而 傅里叶变换(FT) 和它的(位移<=>速度)有点像
震动不会停滞,任何波=sin波叠加,频率是音高 震幅是响度 模式(白噪声,方波锯齿波)是音色 。吉他音的合成就是通过逐步抑制高频声音
DFT(波形->dt离散频谱,含nIter个震幅)和IFT(震幅*频率=频率范围的动量)
>当且仅当对于任意的ε,存在一个δ>0,使得只要0<|x-a|<δ,就有|f(x)-L|<ε,那么我们就说f(x)在a点的极限为L。记做: \lim_x->a f(x)=L
改写下语序,内联非参数符号:
fx在a的极限=L:没有数 >=fx-L,使 x距a 为正 (fx-L为最小)
1/x 在Inf 的极限=1:x趋近inf 时 (1/x)-1 是最小值
🤪我死了,这是什么数学语言
因为是稠密,不能[1,2,3].sum() ,该
fold(0..1 step dt, 0,(a,t)=>a+ sin(x=3*t)*dt) ,是sin(0~3)线与y=0 即x轴 交集的面积。对程序员也可藏+,dt易改为 foldDt(0..3, sin) 的形式,即数学的 \int_0^3 sin(x)dt 😂导数正是这种统求计算的产物,有了导数就能求函数线的大小极值—物理”瞬时(无穷小,不是负无穷.dt时间内)“速度,只有导=0 才是极值点,当然除非y=常数 不会精确=0 的.. 人工神经网络(加权求和y=激活f(wx) 的层级链)的梯度下降学习就是给定xy看f梯度和误差函数调w (及层误差反向传递),这个激活函数必须可导
dx^2/dx是x^2的导函数,其形式dy/dx ,物理上y=路程,x=时间t,d即”瞬时“精度。简化后得 2xdx+
(dx)^2/dx =(x^2)'=2x 因为数学爱给等式绘图 不指明yx,函数也即数这个指数函数的导是通过y+dy / x+dx 代入化简得来的,2x 是上升曲线,正好配对了指数函数的越升越快
微积分是互逆运算,一个是求速率,一个是求距离,因为对非线性(y=x)运动不能平均有这一出,而 傅里叶变换(FT) 和它的(位移<=>速度)有点像
震动不会停滞,任何波=sin波叠加,频率是音高 震幅是响度 模式(白噪声,方波锯齿波)是音色 。吉他音的合成就是通过逐步抑制高频声音
DFT(波形->dt离散频谱,含nIter个震幅)和IFT(震幅*频率=频率范围的动量)
movFT=f=>{
let i,{N,dt}=c, exp=t=>转(t*DEG,Vec2),Cs=[]
//v 频率(震幅k)=dt*Sum[t]f(t)e^-2pi(kt) 。 原f(震幅i,频率t)=e^2pi(it) 。每路径%点一个频谱。
for(i=-N;i<=N;i++)Cs[i]=foldRng(0,1,dt, (x,t)=>x.p(exp(-i*t).pC(f(t)) ) ,Vec2(0) ).pk(dt)
return t=>{let i,vs=[],v=i=>[exp(i*t).pC(Cs[i]),i] //t=路径% i=震幅 Cs[i]=频率
for(i=1;i<=N;i++)vs.push(v(i),v(-i))//-N,1,+N
return vs.sort((a,b)=>b[0].l-a[0].l)//[0]=max
}
} >当且仅当对于任意的ε,存在一个δ>0,使得只要0<|x-a|<δ,就有|f(x)-L|<ε,那么我们就说f(x)在a点的极限为L。记做: \lim_x->a f(x)=L
改写下语序,内联非参数符号:
fx在a的极限=L:没有数 >=fx-L,使 x距a 为正 (fx-L为最小)
1/x 在Inf 的极限=1:x趋近inf 时 (1/x)-1 是最小值
🤪我死了,这是什么数学语言
Cnblogs
前馈全连接神经网络和函数逼近、时间序列预测、手写数字识别 - Conmajia - 博客园
Andrew Kirillov 著 Conmajia 译 2019 年 1 月 12 日 原文发表于 CodeProject(2018 年 9 月 28 日). 中文版有小幅修改,已获作者本人授权.
duangsuse::Echo
#math 感觉太失败了,但…我依然已经重写 没想到傅里叶公式如此简单,但是啊但是 感觉数学和工程理论差异蛮大的,对我们而言连续(\int)根本是不存在的,一切计算都是有精度按步长积分,Sigma(Sum) 符号看起来也很多余,我们根本搞不清为什么有两种版本的公式,在理论上有何分别。虚数就更离奇,它的vec2乘法是 xX+yY,xY-yX ,别人说复数虚数(r,i)*i 的物理意义是旋转90度,也就是生成t的螺旋,我能不能无视虚数平面,只用笛卡尔两系计算呢? (x+iy)*(cosθ+isinθ)即e^it…
This media is not supported in your browser
VIEW IN TELEGRAM
我的天哪,去 #zhihu 看了下,他们讲的这都是什么啊,一大篇文字比喻历史,我知道那些干嘛?我想问的是2D傅里叶 xX+yY, xY-yX 乘法到底有什么特殊的,能不能用几何或统计解读,复数(complex)和角座标和函数线有何关系 ,为什么在 cosr,sinr ,r=2pi*震幅i*t 和 f(t)=x,y 间加上,再通过 r=2pi*t *-i*频率 就能还原xy,
你们这编码信息还有精度损失啊,我IQ得多高脑补多少才能看懂这到底有何原理,真的不想再看数学,语言贫瘠的要死
mathsolver.microsoft.com 果然辣鸡,客户端计算都不会做,UI差又慢死
—
噢… cos,sin 而非sincos 的顺序是为了画画时从瞬时针开始」 🤪算了不想了
你们这编码信息还有精度损失啊,我IQ得多高脑补多少才能看懂这到底有何原理,真的不想再看数学,语言贫瘠的要死
mathsolver.microsoft.com 果然辣鸡,客户端计算都不会做,UI差又慢死
—
噢… cos,sin 而非sincos 的顺序是为了画画时从瞬时针开始」 🤪算了不想了
duangsuse::Echo
#math #signal http://amid.fish/karplus-strong 只是合成一段普通的吉他拨弦,可以用动态平均(a,b)=>(a+b)/2 递减白噪声波形。但要做得更自然,需要知道当前t 缓冲区里的波形和频率,从而仅抑制高频sin波(类似Low-Pass Filter), 傅里叶变换可以把任何波形拆成不同频于不同起始(fr,dt)的sin波叠加,同样的原理也应用于 xy[] 路径到圆半径速度、位图切片(JPEG压缩) 等。(频谱图和它使用的 constant Q 基频f0提取。 …
#math 【以下内容作者即将弃坑】正弦波的叠加,也可以理解为螺旋线的叠加在xy的投影。光波就是如此
傅里叶变换(更新:是之前观察的失败。 现在发现真和复数无关了..
迭代频率i而较f(t) 圆圈^i*t. xX+yY 就是求与震幅1的差,xY+yX 则是把另点yx转90度 同操作(即海螺状),在计算序列里是求方向平均 即震动频率,得俩数=动量。和卷积或t轴有关吗?无关
yx=频率震幅(右增直方图),负螺旋回到sin波, xX+yY 是高度、xY+yX 是速度,在时间点t 2Dsin 就是当前频区间的动量;因为说到底FT和IFT(xy=时位<=>频幅)都是海螺迭代的过程-它能统计和回归震幅频
迭代频率,从数学上大部分时间虚数都是环绕0点画花(sinr在+-r上是不对称x的),但当频率k正好包含在此细度里时,t在实部或虚部坐标轴的一侧形成一个圆(就产生Sum非0),这个圆随t变化产生螺旋线
zhuanlan.zhihu.com/p/19763358 这个物理意义就是博文的最后一张图(一个方波的FT复数频域),纵轴是时间,每条线是不同幅频的螺旋线,re=幅度 im=频率相位(毛刺量)。
https://silhouettesforyou.github.io/2021/11/24/22/ 的交互blog是极其 #recommend 的 #dalao
http://www.dwenzhao.cn/profession/language/jqeffect.html 赵工 嵌入式
https://www.zhihu.com/question/22611929 FT 1D2D连续离散是同公式,处理基于2成分复数(1D信号是xy配对的,不是真成串,还是拿e^kt和ft)
https://zhuanlan.zhihu.com/p/31584464 FFT 20行C++ 同
https://zhuanlan.zhihu.com/p/394821497 fib 海螺分形
https://www.eet-china.com/mp/a102245.html 3b3b
https://bvisness.me/desmos/ 3D渲染器理论
https://gatiaher.github.io/projects/1d-and-2d-fourier-transforms/#understanding-the-1d-math 摄影图形学, 从1D入手
当数轴有0~1区间*-1,其实就是转180度,*虚数单位sqrt(i)=-1 是转90度。复数上虚数轴为y
(其实不是。 我看了下律()cx求和的图示,发现xY+yX真的只是为了生成圆弧而已(p确定时,弧绝对是和它一起转的,因此t在不同k的定位确定),没有递归,迭代序列和海螺... 傅里叶里真的没有虚数,只有正反圆弧,数学家靠虚数在平面模拟旋转,我要死了!
然后@3b1b 的讲法是分频率(速度标尺)把x轴缠绕到虚数平面的圆上,所以sin会变成中心对称的花;FT是一堆从频谱00歪出去的圆内点,长度=震幅、角度=相位
https://www.cnblogs.com/yangyxd/p/5412965.html 这Unity开发者都懂的道理我折腾了好久,还大费功夫弄了Vec2,到底是做了啥啊... 😭
傅里叶变换(更新:是之前观察的失败。 现在发现真和复数无关了..
迭代频率i而较f(t) 圆圈^i*t. xX+yY 就是求与震幅1的差,xY+yX 则是把另点yx转90度 同操作(即海螺状),在计算序列里是求方向平均 即震动频率,得俩数=动量。和卷积或t轴有关吗?无关
yx=频率震幅(右增直方图),负螺旋回到sin波, xX+yY 是高度、xY+yX 是速度,在时间点t 2Dsin 就是当前频区间的动量;因为说到底FT和IFT(xy=时位<=>频幅)都是海螺迭代的过程-它能统计和回归震幅频
迭代频率,从数学上大部分时间虚数都是环绕0点画花(sinr在+-r上是不对称x的),但当频率k正好包含在此细度里时,t在实部或虚部坐标轴的一侧形成一个圆(就产生Sum非0),这个圆随t变化产生螺旋线
律=(k,f)=>{let cx=0,yi=0,t=0;for(;t<1;t+=dt)
转(k*-t*DEG,(X,Y)=>{let{x,y}=f(t); cx+=x*X-y*Y; yi+=x*Y+y*X } )
return Vec2(cx*dt,yi*dt)
}
https://www.jianshu.com/p/15e160252392 基本上和他(及 @3b1b)说的是一回事zhuanlan.zhihu.com/p/19763358 这个物理意义就是博文的最后一张图(一个方波的FT复数频域),纵轴是时间,每条线是不同幅频的螺旋线,re=幅度 im=频率相位(毛刺量)。
https://silhouettesforyou.github.io/2021/11/24/22/ 的交互blog是极其 #recommend 的 #dalao
http://www.dwenzhao.cn/profession/language/jqeffect.html 赵工 嵌入式
https://www.zhihu.com/question/22611929 FT 1D2D连续离散是同公式,处理基于2成分复数(1D信号是xy配对的,不是真成串,还是拿e^kt和ft)
https://zhuanlan.zhihu.com/p/31584464 FFT 20行C++ 同
https://zhuanlan.zhihu.com/p/394821497 fib 海螺分形
https://www.eet-china.com/mp/a102245.html 3b3b
https://bvisness.me/desmos/ 3D渲染器理论
https://gatiaher.github.io/projects/1d-and-2d-fourier-transforms/#understanding-the-1d-math 摄影图形学, 从1D入手
当数轴有0~1区间*-1,其实就是转180度,*虚数单位sqrt(i)=-1 是转90度。复数上虚数轴为y
(其实不是。 我看了下律()cx求和的图示,发现xY+yX真的只是为了生成圆弧而已(p确定时,弧绝对是和它一起转的,因此t在不同k的定位确定),没有递归,迭代序列和海螺... 傅里叶里真的没有虚数,只有正反圆弧,数学家靠虚数在平面模拟旋转,我要死了!
然后@3b1b 的讲法是分频率(速度标尺)把x轴缠绕到虚数平面的圆上,所以sin会变成中心对称的花;FT是一堆从频谱00歪出去的圆内点,长度=震幅、角度=相位
https://www.cnblogs.com/yangyxd/p/5412965.html 这Unity开发者都懂的道理我折腾了好久,还大费功夫弄了Vec2,到底是做了啥啊... 😭
This media is not supported in your browser
VIEW IN TELEGRAM
#Math 作者觉得非常坑。其实FT(和逆运算) 是如何完成图形简化的, mAnim:3b1b 的理念好(只是把x轴变成圆环取步长缠绕)但话太多,S大佬的交互图和公式好但图描述不到位,知乎大佬的文章最后一部分没画明白(为何3D海螺能变成1D方波肯定都懵了!), 交互式入门 只是贴了1D波形和2D图像的例子,它甚至没告诉你频谱图该怎么看,也没说圆圈和频率有何联系,我看了代码也是不原理。
绕了半天我才发现虚数其实是数学扭曲2D线条的一个工具..它的物理意义和莫名算式就是2D旋转(2*-1=180度转, ii=-1, i=90度)。 简单的说交互式入门的"xyt深螺旋"就是FT的核心了,最后 e^频率*震幅=原点 也是没啥好奇怪的(积分就是为求基震幅差,所以D/IFT 的e^ +-相反)。 然后1D信号也模拟画圈圈时的抖动来获取频谱,2D手绘反而更直接了。合着比直方图(groupBy)还简单些… 🤪 只是积分来微分去 imag real 的把人吓怕了。
符号不统一倒是问题(非常严重,明明FT是信号处理SP领域,数学界用上g或希腊epslion和震幅w,电路上虚数i=j,伪SP用Ff.. 我的智商暂不支持如此多的别名!)。
我想迭代频率k, t=0~1, e=2pi cos,sin ,v=频段动量 会比较易读。因为Xe大佬的是正逆FT 一次解决(用来简化图像),震幅l其实是不存在的
结果最后不仅从屏幕域<=>数学域 没必要(SVGxy就能基于%的),我连Vec2都没必要用于实现傅里叶变换算法了...4行写完么
绕了半天我才发现虚数其实是数学扭曲2D线条的一个工具..它的物理意义和莫名算式就是2D旋转(2*-1=180度转, ii=-1, i=90度)。 简单的说交互式入门的"xyt深螺旋"就是FT的核心了,最后 e^频率*震幅=原点 也是没啥好奇怪的(积分就是为求基震幅差,所以D/IFT 的e^ +-相反)。 然后1D信号也模拟画圈圈时的抖动来获取频谱,2D手绘反而更直接了。合着比直方图(groupBy)还简单些… 🤪 只是积分来微分去 imag real 的把人吓怕了。
符号不统一倒是问题(非常严重,明明FT是信号处理SP领域,数学界用上g或希腊epslion和震幅w,电路上虚数i=j,伪SP用Ff.. 我的智商暂不支持如此多的别名!)。
我想迭代频率k, t=0~1, e=2pi cos,sin ,v=频段动量 会比较易读。因为Xe大佬的是正逆FT 一次解决(用来简化图像),震幅l其实是不存在的
结果最后不仅从屏幕域<=>数学域 没必要(SVGxy就能基于%的),我连Vec2都没必要用于实现傅里叶变换算法了...4行写完么
duangsuse::Echo
#math 【以下内容作者即将弃坑】正弦波的叠加,也可以理解为螺旋线的叠加在xy的投影。光波就是如此 傅里叶变换(更新:是之前观察的失败。 现在发现真和复数无关了.. 迭代频率i而较f(t) 圆圈^i*t. xX+yY 就是求与震幅1的差,xY+yX 则是把另点yx转90度 同操作(即海螺状),在计算序列里是求方向平均 即震动频率,得俩数=动量。和卷积或t轴有关吗?无关 yx=频率震幅(右增直方图),负螺旋回到sin波, xX+yY 是高度、xY+yX 是速度,在时间点t 2Dsin 就是当前频区间的动量…
#learn #math #signal #algorithm Fourier Transform
傅里叶变换可以用于音乐可视化(波形->频谱图)、电音与乐器合成及图像滤波(H/L/Band-pass)、音视频压缩(jpg,mp3)。 Better explained 有个解释:”可以告诉你一杯水有什么成分“。 其实还不如用颜色纷呈->颜色分层的鸡尾酒来解释,白光也是由所有频率的可见光波构成的,“折色”棱镜(红波长最长,绿频率最耀眼)就是这FT。
颜色五彩斑斓,却是由rgb三原色或hsv色向-饱和光度 这些分量构成的,音响波动捉摸不定,却是由不同频的sin震幅构成的。音高是频率,响度是震幅,震动模式“音色”也即频谱
这是一个正逆傅里叶变换,调用两次以
d*的是虚数乘法,当应用于1D(如声音),y恒为0
虚数用于2D旋转(公式 xcos-ysin,xsin+ycos :于角r)。其实,FT 也有非虚数的形式 Int[t=0~5] f(t)cos(xpi*t)dt ,只是其反函数 有两个表达式,所以复数轴y的ii=-1=180deg是简化计算的(呃
为什么?可以把手绘路径视作点构成的折线,它是xyt深 3个轴构成的3D图像,t=0~1。举起左手食指y,拇指中指是xz轴。
有了震幅向量,以其 频率*震幅=动量 ;路径原点=不同频率(圈大小)的动量之和,咱把累积动量每内点画成圆圈,而跟踪最外点,就成了傅里叶的可视化。
圆圈大=震幅大,速度快=频率快。如果图像较毛刺,中频信号会略广,如果图像很圆,几乎只1圈在转。 频率震幅也能再”变换“—相对0,0长度=震幅、角度=相位
对人眼而言色相位比振幅重要,而声音频率即音高,常Q法就能从波形检测八度音。
@3b1b 的视角也是如此:迭代sin(t),再每点具有t%圆的角度,即其缠绕在0点为中心对称花,正负抵消无振幅,但若频率kt%(即x上竖线1Hz)正好合适,会发生“共振”-竖线正好量出sin的波峰
代码怎么写?
实数是稠密的,需取一个dt来把路径分成N=1/dt个散点,即
setInterval 里记t%的内动量之和-画旧点初[0,0],连线到新点,画距离之长的圆
过去的端点路径用[]记录:
因同时跑正反函数,律的k只要相反就能、转的cos/sin只要01位置计算对应就OK,但应期望频谱是正的。
但从0点积分震荡可以写成不必居中平移数据到0,0的版本,f(t)e^i2pi*-t k 内e平移到正轴即避免数组索引右移。考虑理论优雅和性能 仅简化代码时用。
也有数组含正负索引和虚数向量混为一谈的写法
若把xy(0,1)旋转t*DEG ,xy-t深里它就是螺旋线,当然f(t)不会一直是0,1。在1D里仅用复数的实轴x,从tx上看它积了sin(kt)与ft的振幅距离,反向时已知k和振幅l,用sin(k*-t)l 让y反着震(考虑两个sin 1*2pi x 的乘,距大积大,故需反比-在正公式)得原ft,2D复数直接兼容
为什么3b1b的视频用拟人π呢?或许是象征学术圈吧,大家都是一个半圆,让对方完整,所以才能构成圈而非沙堡啊。
为什么我要在没头脑和不高兴间二选一呢?我在工程时是严肃的,但科普时就可以很随性,自由选择语言侧重。因为科普并不是需要大师精英来完成,自然而然去做就行啦
我一定会努力追求他们的高度、遍历技术之广度,哪怕是用自己的方法,哪怕高数没有及格过;
我不想断言它们或自己属于什么层次,因为,至少每一步都很有趣啊!
https://t.me/dsuse/17587
傅里叶变换可以用于音乐可视化(波形->频谱图)、电音与乐器合成及图像滤波(H/L/Band-pass)、音视频压缩(jpg,mp3)。 Better explained 有个解释:”可以告诉你一杯水有什么成分“。 其实还不如用颜色纷呈->颜色分层的鸡尾酒来解释,白光也是由所有频率的可见光波构成的,“折色”棱镜(红波长最长,绿频率最耀眼)就是这FT。
颜色五彩斑斓,却是由rgb三原色或hsv色向-饱和光度 这些分量构成的,音响波动捉摸不定,却是由不同频的sin震幅构成的。音高是频率,响度是震幅,震动模式“音色”也即频谱
这是一个正逆傅里叶变换,调用两次以
-i+N,f ; i*t,a[i+N] (其中f是+-1内2D路径 t是路径% k=+-i是第kHz频谱):with(Math){DEG=2*PI,转=(r,f)=>f(cos(r),sin(r))}
just=k=>()=>k
律=(k,f)=>{let cx=0,yi=0,d=dt, t=f.pop?(f=just(f),d= 1):0;for(;t<=1;t+=d)
转(k*t*DEG,(X,Y)=>{let[x,y]=f(t); cx+=d*(x*X-y*Y); yi+=d*(x*Y+y*X) } )
return [cx,yi]
} d*的是虚数乘法,当应用于1D(如声音),y恒为0
虚数用于2D旋转(公式 xcos-ysin,xsin+ycos :于角r)。其实,FT 也有非虚数的形式 Int[t=0~5] f(t)cos(xpi*t)dt ,只是其反函数 有两个表达式,所以复数轴y的ii=-1=180deg是简化计算的(呃
为什么?可以把手绘路径视作点构成的折线,它是xyt深 3个轴构成的3D图像,t=0~1。举起左手食指y,拇指中指是xz轴。
转(tDEG 在xy平面只是圈,但考虑t深,ty右平面=sin, xt顶平面=cos ,它是t的螺旋,因此 2D旋转t%后正是 +-1 内点与螺旋的差,如果输入恰好是0,0宽1的正圆,路径t%点 t%DEG旋转结果— 0点转0,6点转6,... 会开始叠加而非互相抵消,给出一个震幅向量,这就是傅里叶的物理意义有了震幅向量,以其 频率*震幅=动量 ;路径原点=不同频率(圈大小)的动量之和,咱把累积动量每内点画成圆圈,而跟踪最外点,就成了傅里叶的可视化。
圆圈大=震幅大,速度快=频率快。如果图像较毛刺,中频信号会略广,如果图像很圆,几乎只1圈在转。 频率震幅也能再”变换“—相对0,0长度=震幅、角度=相位
对人眼而言色相位比振幅重要,而声音频率即音高,常Q法就能从波形检测八度音。
@3b1b 的视角也是如此:迭代sin(t),再每点具有t%圆的角度,即其缠绕在0点为中心对称花,正负抵消无振幅,但若频率kt%(即x上竖线1Hz)正好合适,会发生“共振”-竖线正好量出sin的波峰
代码怎么写?
实数是稠密的,需取一个dt来把路径分成N=1/dt个散点,即
律(k,f=t=>svg.getPointAt(t*totalLen) ) 即 ps[t*n(ps) >>0]
画布用 fillRect(x,y,1,1) 画点,stroke(arc(x,y,l, 0,DEG)) 画圆,moveTo+lineTo*N 画折线。 SVG可先内联在代码里,通过<path d="M0,0..."> 加载setInterval 里记t%的内动量之和-画旧点初[0,0],连线到新点,画距离之长的圆
过去的端点路径用[]记录:
logPoints=(a=[])=>p=>{a.push(p); a.forEach(p=>g.fillRect(...p,1,1))}
对无尽重复动画只push不好,可用环形队列 Array(1/dt),i=0, a[i=(i+1)%n(a)]=记录 ,遍历略。因同时跑正反函数,律的k只要相反就能、转的cos/sin只要01位置计算对应就OK,但应期望频谱是正的。
但从0点积分震荡可以写成不必居中平移数据到0,0的版本,f(t)e^i2pi*-t k 内e平移到正轴即避免数组索引右移。考虑理论优雅和性能 仅简化代码时用。
也有数组含正负索引和虚数向量混为一谈的写法
若把xy(0,1)旋转t*DEG ,xy-t深里它就是螺旋线,当然f(t)不会一直是0,1。在1D里仅用复数的实轴x,从tx上看它积了sin(kt)与ft的振幅距离,反向时已知k和振幅l,用sin(k*-t)l 让y反着震(考虑两个sin 1*2pi x 的乘,距大积大,故需反比-在正公式)得原ft,2D复数直接兼容
为什么3b1b的视频用拟人π呢?或许是象征学术圈吧,大家都是一个半圆,让对方完整,所以才能构成圈而非沙堡啊。
为什么我要在没头脑和不高兴间二选一呢?我在工程时是严肃的,但科普时就可以很随性,自由选择语言侧重。因为科普并不是需要大师精英来完成,自然而然去做就行啦
我一定会努力追求他们的高度、遍历技术之广度,哪怕是用自己的方法,哪怕高数没有及格过;
我不想断言它们或自己属于什么层次,因为,至少每一步都很有趣啊!
https://t.me/dsuse/17587
Desmos
Fourier Transform