diff --git a/CGII/src/AtomicTransform.cpp b/CGII/src/AtomicTransform.cpp index 6b71c45..5e54dc8 100644 --- a/CGII/src/AtomicTransform.cpp +++ b/CGII/src/AtomicTransform.cpp @@ -97,6 +97,8 @@ void AtomicRotationTransform::optimize_value(const Vec3 &local_vector, const Vec if (inverse) result = -result; + result = std::clamp(result, lower_limit, upper_limit); + set_value(result); } diff --git a/CGII/src/IKViewer.cpp b/CGII/src/IKViewer.cpp index 47eec61..4ee7431 100644 --- a/CGII/src/IKViewer.cpp +++ b/CGII/src/IKViewer.cpp @@ -125,7 +125,7 @@ void IKViewer::optimize() { for (auto it = kinematic_chain.rbegin(); it != kinematic_chain.rend(); i++) { - //it->optimize_value(TODO: local_vector, target, inverse); + it->optimize_value(/*local_vector*/, target_position); } current_endeffector_matrix.identity();