【編程德魯伊】系列是我的橫向編程練習筆記,每期圍繞一個主題(數學物理電子圖形聲音...),用幾種程序語言分別實現。戰法牧賊同時修,能抗能打能奶能開溜。
本著不給自己挖坑的原則,先找個簡單弱小的,就從那位拿蔥的大嬸初中數學三角函數開始吧。
三角函數定義
三角函數(英語:Trigonometric functions)是數學中常見的一類關於角度的函數。三角函數將直角三角形的內角和它的兩個邊的比值相關聯,也可以等價地用與單位圓有關的各種線段的長度來定義。三角函數在研究三角形和圓等幾何形狀的性質時有重要作用,也是研究周期性現象的基礎數學工具。
常見的三角函數包括正弦函數(sin)、餘弦函數(cos)和正切函數(tan)。
—— 維基百科
注意加黑的周期性,聲音和可視化編程大部分與此有關。
用單位圓定義三角函數:
圖自維基百科
直角坐標系sin(x)和cos(x)函數圖像:
圖自維基百科
合起來了解下:
圖自Pinterest
至此好像也沒什麼可說的,反正筆記不是教程,任性就是胡編。
Max裡跟三角函數有關的功能很多,可以說整個MSP都以此為基礎。
但本次練習用的是Max Jitter來可視化三角函數,並沒有用到MSP。
Max裡有很多功能子集,其中最著名的就是跟聲音相關的MSP,跟圖形圖像相關的是Jitter。
現在其實官方名稱就叫Max,只是MaxMSP這個早期名稱太有代表性了,文章標題也用MaxMSP來改善下SEO。
起先感覺挺簡單一玩意兒,磕磕絆絆幾個小時,Max真的是學起來如滴水,忘起來如泉湧。。。況且拿蔥的大嬸也不是好惹的。
實現後的Patch大約長下面這樣:
一些Max常用片段參考了非常棒的視頻教程系列:
Amazing Max/Msp Tutorial
https://www.youtube.com/watch?v=HN8nQ_KtG6k
大體思路是用jit.gen去操作jit.matrix,三角函數邏輯都寫在jit.gen裡,然後把最後變換後的matrix用jit.mesh畫出來。
總之,要把大象裝冰箱,分三步就可以,開門、裝!、關門。
動態效果:
很簡約是不是,原計劃真的比這個複雜。。。
本例及【編程德魯伊】系列大部分代碼都開源在這裡:
https://github.com/avantcontra/coding-druid
請猛戳下方讚賞或喜歡作者!
您的金錢鼓勵是我前進的動力。
或者在Patreon上訂閱更多資源,願風指引你充值的道路:
https://www.patreon.com/avantcontra
Cheers~
Contra
公眾號/知乎專欄:浮生開方 實驗編程
網站: floatbug.com