【MCx几何】在MC中绘制Catmull-Rom平滑曲线【粒子特效基础】

前言
众所周知,mc已经被大佬们开发出了许多酷炫的粒子线条,尤其是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曲线,返回曲线上的点
