private void Dimensions(int pCount) { var delta = _bbox.PMax - _bbox.PMin; var maxAxis = _bbox.MaximumExtent(); var deltaAxis = maxAxis == 0 ? delta.X : (maxAxis == 1 ? delta.Y : delta.Z); var invMaxWidth = 1f / deltaAxis; var cubeRoot = 3f * (float)Math.Pow(pCount, 1f / 3); var voxelsPerUnitDist = cubeRoot * invMaxWidth; _nVoxels[0] = (int)Math.Round(delta.X * voxelsPerUnitDist); _nVoxels[0] = Clamp(_nVoxels[0], 1, 64); _nVoxels[1] = (int)Math.Round(delta.Y * voxelsPerUnitDist); _nVoxels[1] = Clamp(_nVoxels[1], 1, 64); _nVoxels[2] = (int)Math.Round(delta.Z * voxelsPerUnitDist); _nVoxels[2] = Clamp(_nVoxels[2], 1, 64); _width[0] = delta.X / _nVoxels[0]; _invWidth[0] = (_width[0] == 0) ? 0 : (1 / _width[0]); _width[1] = delta.Y / _nVoxels[1]; _invWidth[1] = (_width[1] == 0) ? 0 : (1 / _width[1]); _width[2] = delta.Z / _nVoxels[2]; _invWidth[2] = (_width[2] == 0) ? 0 : (1 / _width[2]); }
private void Dimensions(int pCount) { var delta = _bbox.PMax - _bbox.PMin; var maxAxis = _bbox.MaximumExtent(); var deltaAxis = delta[maxAxis]; var invMaxWidth = 1f / deltaAxis; var cubeRoot = 3f * (float)Math.Pow(pCount, 1f / 3); var voxelsPerUnitDist = cubeRoot * invMaxWidth; for (var i = 0; i < 3; i++) { _nVoxels[i] = (int)Math.Round(delta[i] * voxelsPerUnitDist); _nVoxels[i] = Clamp(_nVoxels[i], 1, 64); } for (var i = 0; i < 3; i++) { _width[i] = delta[i] / _nVoxels[i]; _invWidth[i] = (_width[i] == 0) ? 0 : (1 / _width[i]); } }