MayaFlux 0.4.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 398 of file Region.hpp.

399 {
400 Region result = *this;
401 for (size_t i = 0; i < std::min<size_t>(factors.size(), start_coordinates.size()); i++) {
402 uint64_t center = (start_coordinates[i] + end_coordinates[i]) / 2;
403 uint64_t half_span = get_span(i) / 2;
404 auto new_half_span = static_cast<uint64_t>((double)half_span * factors[i]);
405
406 result.start_coordinates[i] = center - new_half_span;
407 result.end_coordinates[i] = center + new_half_span;
408 }
409 return result;
410 }
uint64_t get_span(uint32_t dimension_index=0) const
Get the span (length) of the region along a dimension.
Definition Region.hpp:290
std::vector< uint64_t > end_coordinates
Ending frame index (inclusive)
Definition Region.hpp:78
std::vector< uint64_t > start_coordinates
Starting frame index (inclusive)
Definition Region.hpp:75

References end_coordinates, and start_coordinates.