public float?GetAverageHeightFromNeighbourhood(int pKernelSizeMultiplier) { int pKernelSize = CGroundArray.GetKernelSize(); pKernelSize *= pKernelSizeMultiplier; int defined = 0; float heightSum = 0; for (int x = -pKernelSize; x < pKernelSize; x++) { for (int y = -pKernelSize; y < pKernelSize; y++) { int xIndex = indexInField.Item1 + x; int yIndex = indexInField.Item2 + y; CField el = GetFieldWithOffset(x, y); if (el != null && el.IsDefined()) { defined++; heightSum += (float)el.GetHeight(); } } } if (defined == 0) { return(null); } return(heightSum / defined); }
private bool HasAllNeighboursDefined(bool p8neighbourhood) { bool neighbourhood4Defined = Left.IsDefined() && Right.IsDefined() && Top.IsDefined() && Bot.IsDefined(); if (!p8neighbourhood) { return(neighbourhood4Defined); } else { return(neighbourhood4Defined && Left.Top.IsDefined() && Right.Top.IsDefined() && Left.Bot.IsDefined() && Right.Bot.IsDefined()); } }