【MCx幾何】在MC中繪制Catmull-Rom平滑曲線【粒子特效基礎】

前言
眾所周知,mc已經被大佬們開發(fā)出了許多酷炫的粒子線條,尤其是soma3.0曲線,可以給紅石音樂帶來非常不錯的視覺效果,但弊端是soma3.0缺乏靈活度,只能在平面上進行繪制,這讓它在紅石音樂以外的領域較難得到應用。這篇專欄就簡單講下更靈活的Catmull-Rom曲線的MC內繪制方法
本專欄只講怎么寫代碼,不講原理! 想知道原理和公式推導請自行搜索
編程語言使用Java 18,其他語言也差不多 基本上都是數學計算
粒子生成使用ColorBlock模組,原版一樣的
(小學生都能看懂!)

準備工作
1.坐標的表示: x-y-z?分別表示mc的三條坐標軸;P.x表示點P的x軸坐標,y,z也一樣
2.方程:
????算法矩陣式:
????寫成小學生都能看懂的形式就是:
????*α為曲線的扭曲程度,一般取0.5;P0與P3為控制點,catmull-rom算法連接兩個點需要在兩端點再加兩個控制點來控制曲線的形狀,所以繪制一條catmull-rom曲線需要4個點,實際只有P1和P2被連接

代碼
要求:輸入待連接的兩個點P1和P2與兩端點的控制點P0和P3,以每個方塊長度(mc中的1m)lambda個點的密度作catmull-rom曲線,返回曲線上的點
Point類和PointSequence類可以看我的上一篇專欄:https://www.bilibili.com/read/cv25446970
然后就是如何用這個方法連接一組點了
其實很簡單,在開頭和結尾分別人為添加一個控制點,中間的片段連接第i和i+1個點的時候控制點取第i-1和第i+2個點就行了

代碼要求:輸入一組點(點序列)與兩個控制點ctrl1和ctrl2,將這組點順序連接,以每個方塊長度lambda個點的密度作連貫的catmull-rom曲線,返回曲線上的點
