A Catmull-Rom Spline используется, потому что это своего рода сплайн, представляющий кривую, в которой вы можете добавлять контрольные точки и уточнять саму кривую (это то, что вы делаете в Photoshop, когда нажимаете на добавить новую точку), с тем, чтобы кривая проходила через каждую указанную вами контрольную точку.
В любом случае вам просто нужна функция, которая принимает значение (с плавающей запятой в 0..1 или int в 0..255 или в любом другом цветовом пространстве), которое выдает другое.
float fun(float x) {
y = /* something */
return y;
}
Конечно, это может быть сделано с любой функцией. Самым базовым по умолчанию является функция идентификации
.
float fun(float x) {
y = x;
return y;
}
Любая другая функция может быть рассчитана с помощью кривых, и она будет в порядке, но более сложной для разработки, я бы посоветовал вам начать с простых примеров, таких как кривая Безье. В любом случае используется параметр t
, так как это параметрические кривые, вам необходимо понять некоторые математические предпосылки кривых, прежде чем углубляться в разработку, посмотрите здесь .