function GetValue takes integer X, integer Y returns integer
return udg_Wert[(X + (Y*(udg_DataSize-1)))]
endfunction
function Interpoliere takes integer Wert1, integer Wert2, integer Nr, integer Von returns integer
local integer Ergebnis1
local integer Ergebnis2
set Ergebnis1 = ( ( Wert1 * udg_Interpolation[( Nr * ( udg_Size / Von ) )] ) / udg_Interpolation_Max )
set Ergebnis2 = ( ( Wert2 * (udg_Interpolation_Max - udg_Interpolation[( Nr * ( udg_Size / Von ) )] ) ) / udg_Interpolation_Max )
return (Ergebnis1 + Ergebnis2)
endfunction
function Berechne takes integer X, integer Y returns integer
local integer Ergebnis
local integer WertX0
local integer WertX1
local integer I_X0
local integer I_X1
local integer I_Y0
local integer I_Y1
local integer Level
local integer Field_Size
local integer Field_DataSize
local integer Max
//-----------------------
set Level = 2
set Max = 500
set Field_Size = (udg_Size / Level)
set Field_DataSize = ((udg_DataSize-1) / Level)
set I_X0 = Field_DataSize*(X / Field_Size) // ok
set I_X1 = I_X0 + Field_DataSize // ok
set I_Y0 = Field_DataSize*(Y / Field_Size) // ok
set I_Y1 = I_Y0 + Field_DataSize // ok
set WertX0 = Interpoliere(GetValue(I_X0,I_Y0),GetValue(I_X1,I_Y0),ModuloInteger(X , Field_Size),Field_Size)
set WertX1 = Interpoliere(GetValue(I_X0,I_Y1),GetValue(I_X1,I_Y1),ModuloInteger(X , Field_Size),Field_Size)
set Ergebnis = (Interpoliere(WertX0,WertX1,ModuloInteger(Y , Field_Size),Field_Size) / 2)
//--------------------------------------
set Level = 4
set Max = Max + 1000
set Field_Size = (udg_Size / Level)
set Field_DataSize = ((udg_DataSize-1) / Level)
set I_X0 = Field_DataSize*(X / Field_Size) // ok
set I_X1 = I_X0 + Field_DataSize // ok
set I_Y0 = Field_DataSize*(Y / Field_Size) // ok
set I_Y1 = I_Y0 + Field_DataSize // ok
set WertX0 = Interpoliere(GetValue(I_X0,I_Y0),GetValue(I_X1,I_Y0),ModuloInteger(X , Field_Size),Field_Size)
set WertX1 = Interpoliere(GetValue(I_X0,I_Y1),GetValue(I_X1,I_Y1),ModuloInteger(X , Field_Size),Field_Size)
set Ergebnis = Ergebnis + Interpoliere(WertX0,WertX1,ModuloInteger(Y , Field_Size),Field_Size)
//--------------------------------------
set Level = 16
set Max = Max + 1000
set Field_Size = (udg_Size / Level)
set Field_DataSize = ((udg_DataSize-1) / Level)
set I_X0 = Field_DataSize*(X / Field_Size) // ok
set I_X1 = I_X0 + Field_DataSize // ok
set I_Y0 = Field_DataSize*(Y / Field_Size) // ok
set I_Y1 = I_Y0 + Field_DataSize // ok
set WertX0 = Interpoliere(GetValue(I_X0,I_Y0),GetValue(I_X1,I_Y0),ModuloInteger(X , Field_Size),Field_Size)
set WertX1 = Interpoliere(GetValue(I_X0,I_Y1),GetValue(I_X1,I_Y1),ModuloInteger(X , Field_Size),Field_Size)
set Ergebnis = Ergebnis + Interpoliere(WertX0,WertX1,ModuloInteger(Y , Field_Size),Field_Size)
//--------------------------------------
set Level = 32
set Max = Max + 2000
set Field_Size = (udg_Size / Level)
set Field_DataSize = ((udg_DataSize-1) / Level)
set I_X0 = Field_DataSize*(X / Field_Size) // ok
set I_X1 = I_X0 + Field_DataSize // ok
set I_Y0 = Field_DataSize*(Y / Field_Size) // ok
set I_Y1 = I_Y0 + Field_DataSize // ok
set WertX0 = Interpoliere(GetValue(I_X0,I_Y0),GetValue(I_X1,I_Y0),ModuloInteger(X , Field_Size),Field_Size)
set WertX1 = Interpoliere(GetValue(I_X0,I_Y1),GetValue(I_X1,I_Y1),ModuloInteger(X , Field_Size),Field_Size)
set Ergebnis = Ergebnis + (2*Interpoliere(WertX0,WertX1,ModuloInteger(Y , Field_Size),Field_Size))
return (Ergebnis*1000)/Max
endfunction