duangsuse::Echo
712 subscribers
4.24K photos
127 videos
583 files
6.45K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
dnaugsuz
sortBy{it.isMale} 就能做 partition 了( 确实 Kotlin 这有点hack,可能是为了内部优化 #Kotlin 有些小瑕疵,比如 listOf(break,return,throw Error()) is List<Nothing> 还有 run apply 是 let also 同类但命名完全不同,本来是 fun()=run{} 的,可官方自己也不用此写法
问题: 呃,今天才知道 Kotlin 的 Boolean 是 Comparable, true > false 。感觉有点坑啊

其实 Kt 的问题不少,比如 Common 改名 Multiplatform 还有些隐藏关键字(typeof..),型参约束可以用 where,主要是太实验性,1.3 的时候字节码生成还有问题,不支持 j.l.invoke API
甚至一些?类型优化也有bug
但Kt确实是 #java JVM编程现阶段最好的选择,full interop ,完善带extfun OOP (只是Android上默认proguard规则还不够好什么的……

当你第一眼看某大佬的Kt 时着实被 let run constructor init companion 这些搞眼花了…… 一时觉得比Rust不明觉厉 🤪 Kotlin 初期的stdAPI命名 是个问题
>啥叫partition
school.partition(男女)

>不是有groupBy了吗
school.groupBy(领导教师学生)

那么 associate (toMap,还带 By-With介词) 和 all,any,none ("exists"=any,none=allnot) 也很容易忘,尽管相比JS和Scala 这是最好的

谈到Kt冷知识,我想再提 UnsafeVariance https://t.me/dsuse/15959

(items[i] as IO<IN, in @UnsafeVariance T>).show(s, v)
这关于 IO<INPUT, T> 的定义,T 是 out 的,不然 Seq<Any>(io1:<String>,io2) 就会报错,如果要把 Reader 和 Writer 写在一起就会出问题,但代码复用偏偏必须写一起

我能断言指定 items: List<(IN)->R> 位置[i]的 show 可以接受(in) T ,因为它本来就是被取并集损失了精度的,于是写了这种代码,
其实它本身同时是 in, 但为了写存储的兼容被迫暂作 out 了而已。

然后匿名 object{} (即 new ArrayList(){{add(1)}} ,常量糖..)的IDE特性也很多,不过 inner class 才正常呢……

#recommend #kotlin #scala #reveng 关于coro底层的代码示例 https://t.me/kotlin_cn/25062
#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=知更鸟摄影
#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段线,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我找到了开发的实质—写前就知道算法结果是啥样
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
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 螺莉莉的黑板报
Forwarded from 层叠 - The Cascading
知乎网页版右上角开始提供无障碍相关功能,包括读屏、修改配色、缩放、字幕等功能。

#Zhihu #Web #Accessibility
#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 画了下,发现这个乘法完全不像在直座标垂直的样子
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的图表才能明白虚数究竟是怎么计算傅里叶变换的 🤪

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可视化,学会了我就是大佬(啊不 🤪
现在代码怎么写已经很清楚了,虚数乘具体是什么不重要,反正知道它能算频段的震幅就行了,3D 螺旋也不需要了,知道 t=0~1 能拿圆圈点算距离求震幅和,能回归波形 就行 🤪 工程就是这么随意

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 日。朝鲜的互联网访问受到严格限制,估计只有极少的一部分人能直接访问全球互联网。
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() ,该 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 是最小值
🤪我死了,这是什么数学语言
我的天哪,去 #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 的顺序是为了画画时从瞬时针开始」 🤪算了不想了
Forwarded from Phonograph (Ralph 萌新喵)
继续写镜像站前端...
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变化产生螺旋线

律=(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行写完么