From 3136604e143b4060c7c92cdbbaad169b3a94a14d Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Thu, 18 Dec 2025 12:41:18 +0100 Subject: [PATCH] in LeadInOutLib migliorata scelta direzione attacco perpendicolare --- LuaLibs/LeadInOutLib.lua | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/LuaLibs/LeadInOutLib.lua b/LuaLibs/LeadInOutLib.lua index c9d4515..a12a85d 100644 --- a/LuaLibs/LeadInOutLib.lua +++ b/LuaLibs/LeadInOutLib.lua @@ -101,10 +101,21 @@ function LeadInOutLib.CalculateLeadInOut( sLeadInOutType, Parameters) local dCosAngleStart = -EdgePrevious.vtEdge * Edge.vtN local dCosAngleEnd = EdgeNext.vtEdge * Edge.vtN local vtLeadInOut - if dCosAngleStart > dCosAngleEnd then - vtLeadInOut = Vector3d( -EdgePrevious.vtEdge) + -- se le due direzioni sono entro i 5° scelgo quella a Z assoluta minore, altrimenti quella più vicino alla perpendicolare + -- massima differenza scalare per variazione di 5deg: cos(0) - cos(0 + 5) = 1 - cos(5) + local dScalarTolerance = 1 - 0.996 + if abs( dCosAngleStart - dCosAngleEnd) < dScalarTolerance then + if abs( EdgePrevious.vtEdge:getZ()) < abs( EdgeNext.vtEdge:getZ()) then + vtLeadInOut = Vector3d( -EdgePrevious.vtEdge) + else + vtLeadInOut = Vector3d( EdgeNext.vtEdge) + end else - vtLeadInOut = Vector3d( EdgeNext.vtEdge) + if dCosAngleStart > dCosAngleEnd then + vtLeadInOut = Vector3d( -EdgePrevious.vtEdge) + else + vtLeadInOut = Vector3d( EdgeNext.vtEdge) + end end -- direzione nel frame solidale al lato di lavoro