Ejemplo n.º 1
0
        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]);
        }
Ejemplo n.º 2
0
        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]);
            }
        }