Ottimizzate le chiamate al calcolo elevazione. Si evita di calcolarla più volte inutilmente perchè calcolata inizialmente nel CollectFeatures.

This commit is contained in:
luca.mazzoleni
2023-11-29 16:07:18 +01:00
parent 593fdcfc24
commit 1664513c8f
12 changed files with 57 additions and 36 deletions
+20 -1
View File
@@ -439,6 +439,25 @@ function BeamLib.GetBoxFaceNorm( b3Box, ptP, vtV)
end
end
---------------------------------------------------------------------
function BeamLib.GetFaceElevation( procOrProcId, nFacet, b3Solid)
local Proc, nProcId
if type( procOrProcId) == "table" then
Proc = procOrProcId
nProcId = Proc.Id
else
nProcId = procOrProcId
end
local dElevation
if not Proc or not Proc.Face or not Proc.Face[nFacet + 1].Elevation then
dElevation = EgtSurfTmFacetElevationInBBox( nProcId, nFacet, b3Solid, GDB_ID.ROOT)
else
dElevation = Proc.Face[nFacet + 1].Elevation
end
return dElevation
end
---------------------------------------------------------------------
function BeamLib.GetFaceElevationFromPointDir( nSurfId, nPartId, ptC, vtN, nIdGeomMaster)
if not ptC or not vtN then return 0 end
@@ -595,7 +614,7 @@ function BeamLib.GetFaceWithMostAdj( Proc, nPartId, bCompare3Fc, dCosSideAng)
local dMinElev, dMinElev2 = GEO.INFINITO, GEO.INFINITO
local dtElev = {}
for i = 1, #nFacInd do
local dElev = EgtSurfTmFacetElevationInBBox( nSurfId, nFacInd[i], b3Solid, GDB_ID.ROOT)
local dElev = BeamLib.GetFaceElevation( Proc, nFacInd[i], b3Solid)
table.insert( dtElev, dElev)
if dElev < dMinElev then
if dMinElev < dMinElev2 then