跳到主要内容

MaxMSP三角函数可视化

【编程德鲁伊】系列是我的横向编程练习笔记,每期围绕一个主题(数学物理电子图形声音...),用几种程序语言分别实现。战法牧贼同时修,能抗能打能奶能开溜。


编程德鲁伊 - 数学篇 - 三角函数可视化 MaxMSP实现

trig-max-visualization


本着不给自己挖坑的原则,先找个(看上去)简单弱小的,就从那位拿葱的大婶初中数学三角函数开始吧。

挑个简单的...

三角函数定义

三角函数(英语:Trigonometric functions)是数学中常见的一类关于角度的函数。三角函数将直角三角形的内角和它的两个边的比值相关联,也可以等价地用与单位圆有关的各种线段的长度来定义。三角函数在研究三角形和圆等几何形状的性质时有重要作用,也是研究周期性现象的基础数学工具

常见的三角函数包括正弦函数(sin)、余弦函数(cos)和正切函数(tan)

—— 维基百科

注意加黑的周期性,声音和可视化编程大部分与此有关。


用单位圆定义三角函数:

用单位圆定义三角函数


直角坐标系sin(x)和cos(x)函数图像:

直角坐标系sin(x)和cos(x)函数图像


合起来了解下:

单位圆三角函数

至此好像也没什么可说的,反正笔记不是教程,任性就是胡编。

三角函数的MaxMSP实现

Max里跟三角函数有关的功能很多,可以说整个MSP都以此为基础。 但本次练习用的是Max Jitter来可视化三角函数,并没有用到MSP。

Max里有很多功能子集,其中最著名的就是跟声音相关的MSP,跟图形图像相关的是Jitter。 现在其实官方名称就叫Max,只是MaxMSP这个早期名称太有代表性了,文章标题也用MaxMSP来改善下SEO。

起先感觉挺简单一玩意儿,磕磕绊绊几个小时,Max真的是学如滴水忘如泉涌。。。拿葱的大婶也不是好惹的。

实现后的Patch大约长下面这样:​

max-screenshot

一些Max常用片段参考了非常棒的视频教程系列:Amazing Max/Msp Tutorial https://www.youtube.com/watch?v=HN8nQ_KtG6k

大体思路是用jit.gen去操作jit.matrix,三角函数逻辑都写在jit.gen里,然后把最后变换后的matrixjit.mesh画出来。 总之,要把大象装冰箱,分三步就可以,开门、装!、关门。

效果:

trig-max-visualization


Talk is cheap. Show me the code!

本例及【编程德鲁伊】系列大部分代码都开源在这里: https://github.com/avantcontra/coding-druid


公众号/B站/小红书/抖音/知乎:实验编程

实验编程社群资源、公开课: https://ghc.h5.xeknow.com/s/hzkMX

实验编程情报中心(会员): https://ghc.h5.xeknow.com/s/2BCFuJ

Cheers🍻

Contra