From 0dd55072dcdc05714c772bc93e59982cf37641bf Mon Sep 17 00:00:00 2001 From: Ajinkya Dahale Date: Thu, 8 Feb 2024 19:47:41 +0530 Subject: [PATCH] [planegcs] Implement `calculateAngleViaParams` For use in angle-via-point with complex curves. --- src/Mod/Sketcher/App/planegcs/GCS.cpp | 10 ++++++++++ src/Mod/Sketcher/App/planegcs/GCS.h | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/src/Mod/Sketcher/App/planegcs/GCS.cpp b/src/Mod/Sketcher/App/planegcs/GCS.cpp index 1b7bf211bc..b8d76d545c 100644 --- a/src/Mod/Sketcher/App/planegcs/GCS.cpp +++ b/src/Mod/Sketcher/App/planegcs/GCS.cpp @@ -1679,6 +1679,16 @@ System::calculateAngleViaPoint(const Curve& crv1, const Curve& crv2, Point& p1, return atan2(-n2.x * n1.y + n2.y * n1.x, n2.x * n1.x + n2.y * n1.y); } +double System::calculateAngleViaParams(const Curve& crv1, + const Curve& crv2, + double* param1, + double* param2) const +{ + GCS::DeriVector2 n1 = crv1.CalculateNormal(param1); + GCS::DeriVector2 n2 = crv2.CalculateNormal(param2); + return atan2(-n2.x * n1.y + n2.y * n1.x, n2.x * n1.x + n2.y * n1.y); +} + void System::calculateNormalAtPoint(const Curve& crv, const Point& p, double& rtnX, diff --git a/src/Mod/Sketcher/App/planegcs/GCS.h b/src/Mod/Sketcher/App/planegcs/GCS.h index 441a1e9af1..1438157cec 100644 --- a/src/Mod/Sketcher/App/planegcs/GCS.h +++ b/src/Mod/Sketcher/App/planegcs/GCS.h @@ -501,6 +501,10 @@ public: double calculateAngleViaPoint(const Curve& crv1, const Curve& crv2, Point& p) const; double calculateAngleViaPoint(const Curve& crv1, const Curve& crv2, Point& p1, Point& p2) const; + double calculateAngleViaParams(const Curve& crv1, + const Curve& crv2, + double* param1, + double* param2) const; void calculateNormalAtPoint(const Curve& crv, const Point& p, double& rtnX, double& rtnY) const; // Calculates errors of all constraints which have a tag equal to