MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ radial_fan_cubic()

MAYAFLUX_API Eigen::VectorXd MayaFlux::Kinesis::radial_fan_cubic ( const Eigen::MatrixXd &  control_points,
double  t,
double  tension = 0.5 
)

Origin-oriented cubic sweep from tension * (p0 - p1) to p3.

Parameters
control_pointsMatrix with four control-point columns.
tParameter in [0,1].
tensionStart displacement scale (default 0.5).
Returns
Sampled point. Adjacent four-point windows need not meet.

Definition at line 384 of file MotionCurves.cpp.

388{
389 if (control_points.cols() != 4) {
390 error<std::invalid_argument>(
391 Journal::Component::Kinesis,
392 Journal::Context::Runtime,
393 std::source_location::current(),
394 "Radial fan cubic requires 4 control points, but got {}",
395 control_points.cols());
396 }
397
398 const Eigen::Matrix4d basis_matrix = BasisMatrices::catmull_rom_with_tension(tension);
399 const Eigen::Vector4d powers(t * t * t, t * t, t, 1.0);
400 return control_points * (basis_matrix * powers);
401}

References MayaFlux::Kinesis::BasisMatrices::catmull_rom_with_tension(), MayaFlux::Journal::Kinesis, and MayaFlux::Journal::Runtime.

Referenced by interpolate().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: