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

◆ scale()

Region MayaFlux::Kakshya::Region::scale ( const std::vector< double > &  factors) const
inline

Scale the region about its center by the given factors.

Parameters
factorsScaling factors for each dimension.
Returns
A new scaled Region.

Definition at line 392 of file Region.hpp.

393 {
394 Region result = *this;
395 for (size_t i = 0; i < std::min<size_t>(factors.size(), start_coordinates.size()); i++) {
396 uint64_t center = (start_coordinates[i] + end_coordinates[i]) / 2;
397 uint64_t half_span = get_span(i) / 2;
398 auto new_half_span = static_cast<uint64_t>((double)half_span * factors[i]);
399
400 result.start_coordinates[i] = center - new_half_span;
401 result.end_coordinates[i] = center + new_half_span;
402 }
403 return result;
404 }
uint64_t get_span(uint32_t dimension_index=0) const
Get the span (length) of the region along a dimension.
Definition Region.hpp:284
std::vector< uint64_t > end_coordinates
Ending frame index (inclusive)
Definition Region.hpp:72
std::vector< uint64_t > start_coordinates
Starting frame index (inclusive)
Definition Region.hpp:69

References end_coordinates, and start_coordinates.