Craig, I somehow missed this answer - I like it a lot. Here is a small app to watch things in action:

Manipulate[

Row[{

ContourPlot[

intSurface[x, y] == c + a x - b y, {x, -Pi, Pi}, {y, -Pi, Pi},

ImageSize -> 300],

Plot3D[{intSurface[x, y], c + a x - b y}, {x, -Pi, Pi}, {y, -Pi,

Pi}, PlotStyle -> {Yellow, Red}, Mesh -> None, PlotPoints -> 30,

ViewPoint -> {0.01, -2.14, 2.62}, ViewVertical -> {0, 0, 1},

SphericalRegion -> True, ImageSize -> 450]

}],

{{a, .275, "X-slope"}, -1, 1, Appearance -> "Labeled"},

{{b, .235, "Y-slope"}, -1, 1, Appearance -> "Labeled"},

{{c, .25, "height"}, -2, 2, Appearance -> "Labeled"},

Initialization :>

(surface =

Flatten[Table[{{x, y},

Sin[x + y + RandomReal[{-0.1, 0.1}]] Sin[2 Pi y x]}, {x, -Pi,

Pi, 2 Pi/24}, {y, -Pi, Pi, 2 Pi/24}], 1];

intSurface = Interpolation[surface];)]