EgtGeomKernel 2.1c4 :

- migliorie a Zmap per calcolo triangoli.
This commit is contained in:
Dario Sassi
2019-03-26 09:21:46 +00:00
parent d76e77e391
commit 1374f7ab66
4 changed files with 24 additions and 12 deletions
BIN
View File
Binary file not shown.
+7 -9
View File
@@ -87,12 +87,12 @@
<IncludePath>C:\;$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)R$(PlatformArchitecture)</TargetName>
<OutDir>$(SolutionDir)$(Configuration)$(PlatformArchitecture)\</OutDir>
<IntDir>$(Configuration)$(PlatformArchitecture)\</IntDir>
<IncludePath>C:\;$(IncludePath)</IncludePath>
<RunCodeAnalysis>false</RunCodeAnalysis>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
@@ -190,18 +190,17 @@ copy $(TargetPath) \EgtProg\DllD64</Command>
</AdditionalOptions>
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
<EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>
<WholeProgramOptimization>true</WholeProgramOptimization>
<WholeProgramOptimization>false</WholeProgramOptimization>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<ModuleDefinitionFile>
</ModuleDefinitionFile>
<AdditionalDependencies>C:\EgtDev\Extern\OxySec\Lib\x32\xnodus32.obj;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateMapFile>false</GenerateMapFile>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<OptimizeReferences>true</OptimizeReferences>
</Link>
<Midl>
<MkTypLibCompatible>false</MkTypLibCompatible>
@@ -235,17 +234,16 @@ copy $(TargetPath) \EgtProg\Dll32</Command>
<FloatingPointModel>Precise</FloatingPointModel>
<EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
<WholeProgramOptimization>true</WholeProgramOptimization>
<WholeProgramOptimization>false</WholeProgramOptimization>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<ModuleDefinitionFile>
</ModuleDefinitionFile>
<AdditionalDependencies>C:\EgtDev\Extern\OxySec\Lib\x64\xnodus.obj;%(AdditionalDependencies)</AdditionalDependencies>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
<OptimizeReferences>true</OptimizeReferences>
</Link>
<Midl>
<MkTypLibCompatible>false</MkTypLibCompatible>
+7 -3
View File
@@ -1972,7 +1972,7 @@ VolZmap::ExtMarchingCubes( int nBlock, VoxelContainer& vVox) const
vtNlm.Normalize() ;
double dDotl = vtNlm * CompoVert[nComp][l].vtVec ;
double dDotm = vtNlm * CompoVert[nComp][m].vtVec;
if ( dDotl < - 0.8 || dDotm < - 0.8) {
if ( dDotl < - 0.85 || dDotm < - 0.85) {
bOverTurning = true ;
break ;
}
@@ -1986,10 +1986,10 @@ VolZmap::ExtMarchingCubes( int nBlock, VoxelContainer& vVox) const
( ( k + 1) * N_DEXVOXRATIO + 0.5) * m_dStep) ;
double dNewU1, dNewU2 ;
if ( IntersLineBox( ptSol, vtNullSpace, ptMinDiag, ptMaxDiag, dNewU1, dNewU2)) {
if ( dNewU1 < dNewU2) {
if ( dNewU1 > 0.) {
ptSol += ( dNewU1 + EPS_SMALL * ( dNewU2 - dNewU1)) * vtNullSpace ;
}
else {
else if ( dNewU2 < 0.) {
ptSol += ( dNewU2 + EPS_SMALL * ( dNewU1 - dNewU2)) * vtNullSpace ;
}
}
@@ -2224,6 +2224,8 @@ VolZmap::RegulateFeaturesChain( vector<VoxelContainer>& vVecVox) const
for ( int nComp = 0 ; nComp < CurVox.nNumComp ; ++ nComp) {
// Vertice fuori dal suo voxel
if ( ! CurVox.Compo[nComp].bInside) {
if ( IsPointInsideVoxelApprox( CurVox.i, CurVox.j, CurVox.k, CurVox.Compo[nComp].ptVert, 1.5 * EPS_SMALL))
continue ;
// Caso corner
if ( CurVox.Compo[nComp].bCorner) {
// Cerco i primi vicini
@@ -2397,6 +2399,8 @@ VolZmap::RegulateFeaturesChain( vector<VoxelContainer>& vVecVox) const
for ( int nComp = 0 ; nComp < CurVox.nNumComp ; ++ nComp) {
// Vertice fuori dal suo voxel
if ( ! CurVox.Compo[nComp].bInside) {
if ( IsPointInsideVoxelApprox( CurVox.i, CurVox.j, CurVox.k, CurVox.Compo[nComp].ptVert, 1.5 * EPS_SMALL))
continue ;
// Caso feature
if ( ! CurVox.Compo[nComp].bCorner) {
INTVECTOR vNearInn, vNearBord ;
+10
View File
@@ -118,6 +118,16 @@ VolZmap::SubtractIntervals( int nGrid, int nI, int nJ,
if ( ! bModified)
return true ;
// Elimino residui di intervalli inutili
for ( int i = 0 ; i < int( vDexel.size()) ; ++ i) {
if ( abs( vDexel[i].dMax - vDexel[i].dMin) < 2 * EPS_SMALL) {
if ( int( abs( vDexel[i].dMax - 0.5 * m_dStep) / m_dStep) == int( abs( vDexel[i].dMin - 0.5 * m_dStep) / m_dStep)) {
vDexel.erase( vDexel.begin() + i) ;
-- i ;
}
}
}
// Imposto ricalcolo della grafica
m_OGrMgr.Reset() ;
// Imposto forma generica