private void Calculate()
{
var random = new Random();
// Calculate 2D
var mn = 10000.0;
var mx = -10000.0;
for (var c = 0; c < 10000; ++c)
{
var nx = random.NextDouble() * 4.0 - 2.0;
var ny = random.NextDouble() * 4.0 - 2.0;
var value = this.Source.Get(nx, ny);
if (value < mn) mn = value;
if (value > mx) mx = value;
}
this.scale2D = (this.high - this.low) / (mx - mn);
this.offset2D = this.low - mn * this.scale2D;
// Calculate 3D
mn = 10000.0;
mx = -10000.0;
for (var c = 0; c < 10000; ++c)
{
var nx = random.NextDouble() * 4.0 - 2.0;
var ny = random.NextDouble() * 4.0 - 2.0;
var nz = random.NextDouble() * 4.0 - 2.0;
var value = this.Source.Get(nx, ny, nz);
if (value < mn) mn = value;
if (value > mx) mx = value;
}
this.scale3D = (this.high - this.low) / (mx - mn);
this.offset3D = this.low - mn * this.scale3D;
// Calculate 4D
mn = 10000.0;
mx = -10000.0;
for (var c = 0; c < 10000; ++c)
{
var nx = random.NextDouble() * 4.0 - 2.0;
var ny = random.NextDouble() * 4.0 - 2.0;
var nz = random.NextDouble() * 4.0 - 2.0;
var nw = random.NextDouble() * 4.0 - 2.0;
var value = this.Source.Get(nx, ny, nz, nw);
if (value < mn) mn = value;
if (value > mx) mx = value;
}
this.scale4D = (this.high - this.low) / (mx - mn);
this.offset4D = this.low - mn * this.scale4D;
// Calculate 6D
mn = 10000.0;
mx = -10000.0;
for (var c = 0; c < 10000; ++c)
{
var nx = random.NextDouble() * 4.0 - 2.0;
var ny = random.NextDouble() * 4.0 - 2.0;
var nz = random.NextDouble() * 4.0 - 2.0;
var nw = random.NextDouble() * 4.0 - 2.0;
var nu = random.NextDouble() * 4.0 - 2.0;
var nv = random.NextDouble() * 4.0 - 2.0;
var value = this.Source.Get(nx, ny, nz, nw, nu, nv);
if (value < mn) mn = value;
if (value > mx) mx = value;
}
this.scale6D = (this.high - this.low) / (mx - mn);
this.offset6D = this.low - mn * this.scale6D;
}