MCPcopy Create free account
hub / github.com/MeshInspector/MeshLib / getDistanceFieldParams

Function getDistanceFieldParams

source/MRVoxels/MRWeightedPointsShell.cpp:23–54  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

21{
22
23DistanceVolumeCreationParams getDistanceFieldParams( const Box3f& bbox, const ParametersMetric& params )
24{
25 const auto box = bbox.expanded( Vector3f::diagonal( params.offset + params.dist.maxWeight ) );
26 const auto [origin, dimensions] = calcOriginAndDimensions( box, params.voxelSize );
27 const auto minDist = params.offset - params.numLayers * params.voxelSize;
28 const auto maxDist = params.offset + params.numLayers * params.voxelSize;
29
30 // bidirDist = abs( dist + w ) - w
31 const auto maxBidirDist = std::max( std::abs( maxDist + params.dist.maxWeight ),
32 std::abs( minDist + params.dist.minWeight ) ) - params.dist.minWeight;
33
34 const auto minBidirDist = ( std::signbit( maxDist + params.dist.maxWeight ) == std::signbit( minDist + params.dist.minWeight ) ) ?
35 ( std::min( std::abs( maxDist + params.dist.minWeight ),
36 std::abs( minDist + params.dist.maxWeight ) ) - params.dist.maxWeight )
37 : -params.dist.maxWeight;
38
39 return DistanceVolumeCreationParams
40 {
41 .vol =
42 {
43 .origin = origin,
44 .voxelSize = Vector3f::diagonal( params.voxelSize ),
45 .dimensions = dimensions,
46 },
47 .dist =
48 {
49 params.dist,
50 minBidirDist,
51 maxBidirDist
52 }
53 };
54}
55
56MarchingCubesParams getMarchingCubesParams( const Box3f& bbox, const ParametersMetric& params )
57{

Callers 1

runShellFunction · 0.85

Calls 6

diagonalFunction · 0.85
calcOriginAndDimensionsFunction · 0.85
maxFunction · 0.85
absFunction · 0.85
minFunction · 0.85
expandedMethod · 0.80

Tested by

no test coverage detected