Ottimizzate le chiamate al calcolo elevazione. Si evita di calcolarla più volte inutilmente perchè calcolata inizialmente nel CollectFeatures.
This commit is contained in:
+20
-1
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user