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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
duangsuse::Echo
#Python #crawler 爬虫全部文件的小脚本 mkdir -p craw/xecades_files/ wget -r -nH https://file.xecades.xyz/ python extractinfo.py `find -type d|xargs` 实现(元素数据格式 table, 实际 tr=li; td[]=css(.row)): extractinfo.py: #code from bs4 import BeautifulSoup def scrapeTable(e, css_tr…
cat `find -name index.txt`|awk -F: '{gsub("^\\s","",$2);if($2!="-")print($2.":", $1)}'
#dalao 不得不说,真的很硬核: #math #statics #signal #web #js #drawing #linux #flash #game
元胞自动机 | 康威生命游戏(零玩家)..: LIFE.cpp
[停止更新] 它存在的意义就是方便我复制一些代码片段..: TextInputer.cpp
生命游戏(彩色): LIFE
并没有用(ANSI Terminal,ncurses): TextInputer
获取键值(termios.h): GetKeyDown.cpp
获取窗口大小(ioctl,TIOCWINSZ,struct winsz)..: GetWindowSize.cpp
打方块swf小游戏(2x ping-pong bar, with intro text/ball animation): Block
初二做的小游戏 | 当时火遍了全校: Block.swf (在线) - 这玩意声音有点大 所以先做好心理准备
模拟蓝屏(win7): BlueScreen
假装自己电脑蓝屏了 | 恶搞: BlueScreen.html (Pic.png)
神经网络 5%/100% 数据库: 5TestData.txt, 100TestData.txt
MNIST csv数据包: MNIST.7z
英语单词数据库: Database.txt
顾名思义: 天河二号申请表.docx
挺好(: 原子弹制作从入门到精通.pdf
更好(..: 有关苛性氢的危害的报告.pdf
#algorithm #cplusplus
AC自动机算法: AC Automaton.cpp
生成ASCII(sleep&print)动画: ASCII.cpp
数据测试器(<ctime> clock()函数) | 然而只能获得每次允许的耗时: DataTester.cpp
两种最大公倍数的求法: GCD.cpp
吉姆拉尔森计算公式(估计是位运算...) | 计算今天星期几: Kim Larsen.cpp
KMP算法: KMP Search.cpp
曼德勃罗集(Mandelbrot)的控制台写法: Mandelbrot.cpp
Manacher回文子串: Manacher Palindrome.cpp
手动开平方根(实现为部分函数): Manual Sqrt.cpp
线段树: Segment Tree.cpp
泰勒展开求 sinHome: Taylor Sin.cpp
模板(懒 (OIer意味上的): template.cpp
#cg #drawing #cplusplus OpenGL glfw-x11 简单音乐可视化,目前只支持 PulseAudio 作输入
绘制的难点实际上在于 float buffer 管理吧…… 和系统监视器CPU图绘制是一个问题 其实和队列视口完全没关系…… 是实时的频谱图
当然此外还有 #signal 的 FFT ,因为要提取波形

项目由 mgl, FFT, pluse_audio, render, main 组成 ,cli 每秒输出帧率
duangsuse::Echo
WebAudio 相关 —抛弃python pydub啥的啦,浏览器多方便! https://github.com/audacity/audacity/blob/master/src/effects/Wahwah.cpp#L391 freq=3.7 depth=.85 reso=3.4 哇哇 https://p5js.org/examples/sound-filter-bandpass.html 有交互创意 https://wavesurfer-js.org/example/bars/index.html…
https://tinyrave.com/tracks/69-ode-to-joy #signal #tool
https://www.shadertoy.com/view/XlBGzm
https://www.shadertoy.com/view/XlXSWB Praat
https://tinyrave.com/tracks/10-interstellar-theme-song 果然信号处理就是人均data转化 codegen ,啥都会啊
https://www.shadertoy.com/results?query=star 这每张都是壁纸.. #cg

https://tinyrave.com/tracks/23-wizards-and-warriors-midi-nes m

https://www.barretlee.com/blog/2014/02/28/cb-webAudio-filter/
https://www.redblobgames.com/x/1618-webaudio/ 编玩边学 和解释: https://www.cnblogs.com/xy2c/p/7501327.html
#dalao https://andremichelle.io/lab/ ^大佬眼里的大佬。这个是贴图伪3D,他写了很多Flash 几何/曲线(flower,ocean,)/游戏算法(如Bezier碰撞体),可用 ruffle.rs 试玩. 免费DAW audiotool.com 也是他写的-是的,完全和各种社区设计引擎平级的个人..
https://github.com/andremichelle
有B站号,图形和物理模拟巨佬 https://www.shadertoy.com/user/iq
两个人都看似和国内硕博一样,甚至更低端,但实则比@3b1b更稀有

https://permadi.com/java/rayc/Rayc.java ^大佬**3 ... 这是3D扫描渲染.. 图形学大佬都说excellent, 肯定非常牛逼了
https://justintaddei.github.io/webaudio/ 是简单的频谱仪

基于 tf.js 还有个 https://magenta.tensorflow.org/demos/web/softsynth.com , dgen.co
https://oosmoxiecode.com/archive/js_webgl/particles_morph/index.html
https://avseoul.net/particleEqualizer/
duangsuse::Echo
重构 https://alemangui.github.io/pizzicato/ 的代码简直是种折磨,我鸽了3,4天了(当然也是因为天气凉和频道更新。 最开始是想作为WebAudio的练手,的难度下降版,,,) 没想到在我解决人脸识别和画布几何扭曲算法后, 这个东西卡了我很长时间…… 你们不知道……🤪 我原以为声音好听=代码好看,没想到这个作者纯纯就是前端,勉强写了个player UX ,全TM是 getByID 拿{} 去传.. 真的还不比我们班同学的复制粘贴。 menu 和article的结构大量重复倒不说,…
我说大点吧,他这个Pizz icato 看起来很厉害听着也不错,但最终只是 sound source->effect 的单向连接,做成UI 最多整成处理mp3和input getUserMedia 的多声效(GainNode)“配置面板”,这是表现力的极限了。那个生成random()白噪声 和sinewave啥的根本没用处,作者理解不了 WebAudio 为何是基于 AudioNode connect().connect 的吧……看他这个产品页 这还值1.4k star ,真的我不想看pz.js的代码到底长啥样,肯定是一大堆复制粘贴,把我的好印象都破坏了,根 Howler.js 一样

作者根本没想好就开始暴露API了,包络(参数动画) attach/release 开始加在SoundSource上,后来许多又没有此属性,除了 masterVolume 还创建一个 淡入淡出GainNode 去做切换.. 我思量着混音器也不是这么用的啊。 不过它的每个特效都有音量(这时倒可配置起来了,然而特效不支持fade hhh ,节点都用上了 请问 source.volumeGain 和 source.eff[0].volGain 有区别吗)
其实没糟蹋 WebAudio 的项目有很多,比如 p5js.orgwavesurfer-js.org ,一看就知道绝对不是喜欢跨文件复制粘贴的人做得到的 :sob

感觉作者真是有把这个项目当项目做,可是他的HTML真的令我十分头痛啊…… 重构期我都产生700行待改代码和3,4个JSON了,不过我把那个滑条配置默认区间 用函数简化了,算是积累点观察法经验;但是看这种代码真的心累…… 🦀

https://okazari.github.io/Rythm.js/ 创意不错
https://github.com/stewdio/beep.js 只有键盘API.
https://github.com/gridsound/daw GS-工作台 和可视化编程 https://noisecraft.app/browsehttps://github.com/surikov/webaudiofontaudiotool.com 厉害
https://preziotte.com/partymode/ 巨赞的可视化 #signal
https://github.com/rserota/wad#showcase https://github.com/Theodeus/tuna 太虚
http://slang.kylestetz.com/ 编程语言最糟的用途
https://howlerjs.com/ 其实还不错.. 支持分段和3D位置
https://github.com/collab-project/videojs-record 录屏录音
wad和tuna 是啥玩意, bbc/peaks波形是咋..打不开
duangsuse::Echo
【《有一种美叫数学2》| 用方程表达世界的本质,用代码描绘数学的光彩。-哔哩哔哩】 https://b23.tv/cDXyDUU #math 推荐一个超级牛的 Matlab 数学可视化作者,虵🐸的校友 运动模拟、椭圆反射、各种3D图形、虚数Koch分形、A* JPS 、集合覆盖问题、傅里叶、梯度下降、卷积图形识别可视化、泰勒展开、微积分逼近,许多种算法,反正是数学的有很多🐱 实在是太 #dalao 了这个,也在做公众号但是就不一样,很nice A:你说这个文本入场动画咋做的队列啊,两边同时往中间靠? …
#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提取。
任何波形,白噪声包括方波都可以提取为许多sin((t-dt)/fr) 相加的形式。 声音的音高也称为频率。“赫兹”的意思是“每秒振动”,6弦吉他最高弦频率为 330 Hz
不同的震动模式带来不同音色。从sin波中看出振动“块”,它代表一个完整的来回运动。我们将此块称为振动的周期。产生这些声音的方式本质上是通过在一段时间内,采用特定的振动模式并一遍又一遍地重复它。
让它们像乐器最简单的方法是:让响度随着时间的推移而消失。sin的滑动平均听起来就像木琴

振动的两种视角模式与频率—是完全同义的。知道振动模式是什么,等于在哪里标记它的频率(即每个周期有多长),知道频率就可以再现振动模式。
比如在 .1s 5Hz 和 .3 10Hz ,同时播放(+,Gain)就会变成更复杂的声音

傅里叶变换是一种数学方法,仅通过查看振动的形状即可找出振动中包含哪些正弦振动频率。在窗口内,从时间-震子位置转变为时间-正弦频率。查看不同频率的震幅分量
我们可以对任何振动使用傅里叶变换来向我们展示它的正弦频率构建块。

频率图的y是一条连续的分量频率线,而不是代表正弦曲线的各个频率的单个点:不是像方波那样的 100 Hz、300 Hz 和 500 Hz,白色的频率分量噪声分布在一个连续的范围内
就像白光包含相同数量的光谱中所有颜色一样,白噪声包含相同数量的振动频谱中的所有频率
就像一块大理石包含所有可以想象的雕像一样,从白噪声开始,取出我们想要的那种声音。

通过简单地使每个振动周期的大小变得越来越小,均匀抑制了所有分量频率
周期[0]=白噪声;[1]=f(x)/2 缩小,将所有频率数量减少相同
对于 Karplus-Strong ,右x的高频信号衰减更快。这种方式是有道理的,当我们拨动吉他弦时,它开始在整个地方振动,具有广泛的分量频率,但更快的振动当然会更快地消失。
对于一把真正的吉他,周期间过渡会更加渐进,拖延较长的时间。通过改变每个周期的长度来调整每段;改变我们降低高频的速度,可以使声音持续时间更长(听起来像电吉他)或更短(听起来更像原声吉他)。

+声音是由物体振动产生的。振动的形状带来不同的声音。
+振动的频率是震子每秒来回移动的次数。频率越高,音调就越高。
+傅里叶变换表明,我们可以将任何振动分解为不同频率的分量正弦振动的混合。


https://www.jezzamon.com/fourier/zh-cn.html #recommend #learn
公式参考 Better Explained

“ 将声音表示为一堆正弦波。然后可以通过忽略掉较小幅度的高频成分来压缩声音。尽管得出的波形与原始波形不一样,但是听起来将会和原始声音很接近。这基本上就是MP3做的事情
能够在计算机上区分高低频,我们就可以了解一个人实际可以听到的内容。或弄清楚这个波包含了什么音符。

” 我们可以将一个手绘图理解为一个3D的形状,因为点的位置在随时间移动。如果你想象一个人正在绘制一只手,那么这三个维度就代表了某一时刻铅笔尖的位置。除了x和y维度告诉我们笔尖的位置,还有一个时间维度。

我们只用几个圆圈就可以很好地近似表达出原始图案。因为这是一个相当简单的形状,所有后面添加的小圆都是使边缘更加锐利。
使用的是之前的3D螺旋正弦波(在t=z轴画圆)。如果我们添加很多这些螺旋,得到的东西就看起来像我们的3D形状。
请记住,当我们从前面看某t的它们时,这些3D波浪看起来才是像圆圈

基于直方图压缩图像取决于色板大小,纯色图片效果最好,复杂图形无法压缩。 而有了FT,就可以基于有效度和边缘压缩图像
“ 无论我们有什么样的图像,我们都可以添加一堆这些正弦波来回到原始图像。

使用的每个正弦波也将是一个个8x8小图像。我们现在使用一些黑白条纹的小图像,像是“线”,而不是波。为了表示“波”的大小,每个图像将具有或多或少的明暗对比。
为了表示灰度图像,我们需要一些水平(以及垂直)的波图案,将两者相乘

如果我们把这些小图案的对比度调整到适当的值,然后将它们相加,我们就可以得出任意图像。
我们使用一组频率来确定每个像素的亮度或暗度,然后是另外两组用于颜色,一组用于红绿色,另一组用于蓝黄色。图像被分解为8x8块,每个块分别进行分解。我们为每个块使用的[频率个数]决定了JPEG图像的品质。
对于实际的JPEG图像来说,剩下的只有一些额外的细节。
#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
#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震幅构成的。音高是频率,响度是震幅,震动模式“音色”也即频谱

这是一个正逆傅里叶变换,调用两次以 -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://tttttt.me/dsuse/17587
#py #signal wav2png(灰度,logY轴)
这边建议直接把频谱图打印出来,扫图听歌呢(笑)
什么叫数字黑胶唱片啊(后仰
https://tttttt.me/im_RORIRI/8178
(另见这段上班摸鱼出来的代码 #code
https://gist.github.com/lynzrand/22d1c191fe7b92035cdb254c2359958e ref:https://tttttt.me/rynif/30296
#tool https://directmusic.me/wav2png/
#signal #design blurHash https://blurha.sh/
Audio
#signal 3段(《这感觉》wav片段、 经过图像锐化滤镜、加强的图片滤镜 )
#py #signal https://tttttt.me/dsuse/17587

def exponential_smoothing(result,data, alpha):
result[:] = [data[0]] # 初始值即为第一个数据点
for t in range(1, len(data)):
result.append(alpha * data[t] + (1 - alpha) * result[t - 1])

def moving_average(data, window_size):
for i in range(len(data) - window_size + 1):
window = data[i:i + window_size]
yield sum(window) / window_size


计步的实现核心就是状态机,我当年一顿花式踩钉耙,因为自己是脑科学背景的,很直觉的就想到了各种滤波器,时频变换方法,结果 JS 的信号处理生态一坨屎,碰得满脸血。

结果 GPT 告诉我你只需要一个非常简单、几行就能做出来的滤波器,以及一个状态机就能把事情做完了。

这时的我:蛤……????

可以参照源码:
https://github.com/Losses/aliceRun/blob/master/src/utils/StepCounter.ts

感谢现代技术给我重新做人的机会(鞠躬)
duangsuse::Echo
🖕2020作 唉,有生之年系列。 4年了,《罗小黑》都有电影了,我也没点长进吗?.. 😋 #bilibili 然后,这次(CEC-IDE like)不出意外又闹到了 🇻🇳原作者那 幸好是来贴耻辱柱的 #freedom ,唉 赛博丁真 https://github.com/vietnh1009/ASCII-generator/issues/25 >Author: Thank @CyanChanges for your additional info👍. May I merge this comment…
https://www.fxzhihu.com/question/4761968179/answer/37541566095 #bilibili
主=何同学 🤣 一个破烂 2D bmp 矩阵滤镜+mask+ffmpeg分屏显示 还要抄, #signal 入门级别的东西了还能恰十几万饭,真是让人没话可说

正常人都在玩 https://play.ertdfgcvb.xyz/#/src/contributed/emoji_wave
https://ivanceras.github.io/svgbob-editor/ 这些,吃相难看的就抄去吧