1. A method of coding original data comprising the steps of: (a) defining a representative continuous n-dimensional surface as a first approximation to said original data, (b) forming residual data from said original data and said representative continuous n-dimensional surface, (c) dividing said residual data into a first number of range regions, (d) for each of said first number of range regions, performing the following steps (e) to (h): (e) determining a number of domain regions from said original data, said domain regions comprising transformed portions of said original data, (f) for a current one of each of said domain regions, forming a second representative n-dimensional surface from said current domain region, (g) forming a domain residual from said current domain region and said second representative n-dimensional surface, (h) scaling said domain residual to approximate residual in a current range region, wherein said scaling exactly matches one of a plurality of terms in a basis expansion of said current range region, and wherein said scaling forms a scaled domain region having location and transformation data associated with said scaled domain region; and (i) repeating steps (f) to (h) and choosing a scaled domain region which best matches said residual in said range region; (j) adding said best matching scaled domain region to said first representative n-dimensional surface for said first number of range partitions to form a new representative n-dimensional surface; (k) forming new residual from said original data and said new representative n-dimensional surface; (l) repeating steps (d) to (h) until a second approximation is determined; and (m) repeating steps (d) to (k) for all of said first number of range partitions.