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

◆ slice()

std::vector< double > MayaFlux::Kinesis::Discrete::slice ( std::span< const double >  data,
double  start_ratio,
double  end_ratio 
)

Extract a contiguous slice by ratio, returning a new vector.

Parameters
dataSource span
start_ratioNormalised start position [0, 1]
end_ratioNormalised end position [0, 1], must be > start_ratio
Returns
Slice data; empty if parameters are degenerate

Definition at line 127 of file Transform.cpp.

130{
131 if (data.empty() || end_ratio <= start_ratio)
132 return {};
133
134 const size_t s = static_cast<size_t>(std::clamp(start_ratio, 0.0, 1.0) * static_cast<double>(data.size()));
135 const size_t e = static_cast<size_t>(std::clamp(end_ratio, 0.0, 1.0) * static_cast<double>(data.size()));
136
137 if (s >= e)
138 return {};
139
140 return { data.begin() + s, data.begin() + e };
141}