diff --git a/src/libslic3r/Geometry.cpp b/src/libslic3r/Geometry.cpp index 2c50af6e01..ac4af48283 100644 --- a/src/libslic3r/Geometry.cpp +++ b/src/libslic3r/Geometry.cpp @@ -539,14 +539,17 @@ void Transformation::set_rotation(Axis axis, double rotation) #if ENABLE_WORLD_COORDINATE Vec3d Transformation::get_scaling_factor() const { - const TransformationSVD svd(*this); - return { svd.s(0, 0), svd.s(1, 1), svd.s(2, 2) }; + const Transform3d scale = extract_scale(m_matrix); + return { std::abs(scale(0, 0)), std::abs(scale(1, 1)), std::abs(scale(2, 2)) }; } Transform3d Transformation::get_scaling_factor_matrix() const { - const TransformationSVD svd(*this); - return Transform3d(svd.s); + Transform3d scale = extract_scale(m_matrix); + scale(0, 0) = std::abs(scale(0, 0)); + scale(1, 1) = std::abs(scale(1, 1)); + scale(2, 2) = std::abs(scale(2, 2)); + return scale; } #endif // ENABLE_WORLD_COORDINATE