diff --git a/primitive_process/src/subface/simple/cylinder_face.cpp b/primitive_process/src/subface/simple/cylinder_face.cpp index 9b1239b..41f2a8d 100644 --- a/primitive_process/src/subface/simple/cylinder_face.cpp +++ b/primitive_process/src/subface/simple/cylinder_face.cpp @@ -26,7 +26,7 @@ Eigen::Vector4d sphere_function_impl::map_param_to_point(pointer_wrapperlocal_to_world * Eigen::Vector4d(cos_u, p.y(), sin_u, 1.0); + return object->local_to_world * Eigen::Vector4d(cos_u, sin_u, p.y(), 1.0); } Eigen::Vector2d sphere_function_impl::map_point_to_param(pointer_wrapper object, Eigen::Vector3d p) @@ -43,8 +43,8 @@ internal::constraint_curve_intermediate sphere_function_impl::eval_du_constraint const auto cos_u = std::cos(p.x()); const auto sin_u = std::sin(p.x()); - res.f = object->local_to_world * Eigen::Vector4d(cos_u, p.y(), sin_u, 1.0); - res.grad_f = object->local_to_world * Eigen::Vector4d(0, 1, 0, 0.0); + res.f = object->local_to_world * Eigen::Vector4d(cos_u, sin_u, p.y(), 1.0); + res.grad_f = object->local_to_world * Eigen::Vector4d(-sin_u, cos_u, 0, 0.0); return res; } @@ -57,8 +57,8 @@ internal::constraint_curve_intermediate sphere_function_impl::eval_dv_constraint const auto cos_u = std::cos(p.x()); const auto sin_u = std::sin(p.x()); - res.f = object->local_to_world * Eigen::Vector4d(cos_u, p.y(), sin_u, 1.0); - res.grad_f = object->local_to_world * Eigen::Vector4d(-sin_u, 0.0, cos_u, 0.0); + res.f = object->local_to_world * Eigen::Vector4d(cos_u, sin_u, p.y(), 1.0); + res.grad_f = object->local_to_world * Eigen::Vector4d(0, 0, 1, 0.0); return res; } diff --git a/primitive_process/src/subface/simple/plane.cpp b/primitive_process/src/subface/simple/plane.cpp index 1c8fe90..40032e8 100644 --- a/primitive_process/src/subface/simple/plane.cpp +++ b/primitive_process/src/subface/simple/plane.cpp @@ -30,7 +30,7 @@ internal::constraint_curve_intermediate plane_function_impl::eval_du_constraint( internal::constraint_curve_intermediate res{}; res.f = object->local_to_world * Eigen::Vector4d(0, p.x(), p.y(), 1.0); - res.grad_f = object->local_to_world * Eigen::Vector4d(0, 0, 1, 0.0); + res.grad_f = object->local_to_world * Eigen::Vector4d(0, 1, 0, 0.0); return res; } @@ -41,7 +41,7 @@ internal::constraint_curve_intermediate plane_function_impl::eval_dv_constraint( internal::constraint_curve_intermediate res{}; res.f = object->local_to_world * Eigen::Vector4d(0, p.x(), p.y(), 1.0); - res.grad_f = object->local_to_world * Eigen::Vector4d(0, 1, 0, 0.0); + res.grad_f = object->local_to_world * Eigen::Vector4d(0, 0, 1, 0.0); return res; } diff --git a/primitive_process/src/subface/simple/sphere_face.cpp b/primitive_process/src/subface/simple/sphere_face.cpp index 3d071d8..7b4ba0f 100644 --- a/primitive_process/src/subface/simple/sphere_face.cpp +++ b/primitive_process/src/subface/simple/sphere_face.cpp @@ -28,14 +28,14 @@ Eigen::Vector4d cylinder_function_impl::map_param_to_point(pointer_wrapperlocal_to_world * Eigen::Vector4d(cos_u * cos_v, sin_v, sin_u * cos_v, 1.0); + return object->local_to_world * Eigen::Vector4d(cos_u * cos_v, sin_u * cos_v, sin_v, 1.0); } Eigen::Vector2d cylinder_function_impl::map_point_to_param(pointer_wrapper object, Eigen::Vector3d p) { Eigen::Vector4d local_p = (object->world_to_local * Eigen::Vector4d{p.x(), p.y(), p.z(), 1.0}).normalized(); - const auto u = std::atan2(local_p.z(), local_p.x()); - const auto v = std::asin(local_p.y()); + const auto u = std::atan2(local_p.y(), local_p.x()); + const auto v = std::asin(local_p.z()); return Eigen::Vector2d{u, v}; } @@ -49,8 +49,8 @@ internal::constraint_curve_intermediate cylinder_function_impl::eval_du_constrai const auto cos_v = std::cos(p.y()); const auto sin_v = std::sin(p.y()); - res.f = object->local_to_world * Eigen::Vector4d(cos_u * cos_v, sin_v, sin_u * cos_v, 1.0); - res.grad_f = object->local_to_world * Eigen::Vector4d(cos_u * -sin_v, cos_v, sin_u * -sin_v, 0.0); + res.f = object->local_to_world * Eigen::Vector4d(cos_u * cos_v, sin_u * cos_v, sin_v, 1.0); + res.grad_f = object->local_to_world * Eigen::Vector4d(-sin_u * cos_v, cos_u * cos_v, 0, 0.0); return res; } @@ -65,8 +65,8 @@ internal::constraint_curve_intermediate cylinder_function_impl::eval_dv_constrai const auto cos_v = std::cos(p.y()); const auto sin_v = std::sin(p.y()); - res.f = object->local_to_world * Eigen::Vector4d(cos_u * cos_v, sin_v, sin_u * cos_v, 1.0); - res.grad_f = object->local_to_world * Eigen::Vector4d(-sin_u * cos_v, 0.0, cos_u * cos_v, 0.0); + res.f = object->local_to_world * Eigen::Vector4d(cos_u * cos_v, sin_u * cos_v, sin_v, 1.0); + res.grad_f = object->local_to_world * Eigen::Vector4d(cos_u * -sin_v, sin_u * -sin_v, cos_v, 0.0); return res; }