40 lines
914 B
C
40 lines
914 B
C
/*
|
|
* Copyright (c), Recep Aslantas.
|
|
*
|
|
* MIT License (MIT), http://opensource.org/licenses/MIT
|
|
* Full license can be found in the LICENSE file
|
|
*/
|
|
|
|
#ifndef cglm_curve_h
|
|
#define cglm_curve_h
|
|
|
|
#include "common.h"
|
|
#include "vec4.h"
|
|
#include "mat4.h"
|
|
|
|
/*!
|
|
* @brief helper function to calculate S*M*C multiplication for curves
|
|
*
|
|
* This function does not encourage you to use SMC,
|
|
* instead it is a helper if you use SMC.
|
|
*
|
|
* if you want to specify S as vector then use more generic glm_mat4_rmc() func.
|
|
*
|
|
* Example usage:
|
|
* B(s) = glm_smc(s, GLM_BEZIER_MAT, (vec4){p0, c0, c1, p1})
|
|
*
|
|
* @param[in] s parameter between 0 and 1 (this will be [s3, s2, s, 1])
|
|
* @param[in] m basis matrix
|
|
* @param[in] c position/control vector
|
|
*
|
|
* @return B(s)
|
|
*/
|
|
CGLM_INLINE
|
|
float
|
|
glm_smc(float s, mat4 m, vec4 c) {
|
|
vec4 vs;
|
|
glm_vec4_cubic(s, vs);
|
|
return glm_mat4_rmc(vs, m, c);
|
|
}
|
|
|
|
#endif /* cglm_curve_h */
|