posted June 20, 2000 09:18 PM
Draigan,The idea I had tossed around for awhile was this: Take a heightfield with one spike in it. As you move away from the spike, it will either turn into a mountain (tall and wide), a hill (short and wide), or dissapear altogether (depending on your algorithm).
This is not ideal. Preferably, you would maintan the spike up until the point where the node containing it's height sample goes out of sight. Otherwise, you have an extreme jump in elevation at that point (a 'pop').
So, given a regular subdivision recursive algorithm, the spike would be maintained longer if you placed it at one of the original corners of the terrain. Likewise, the centerpoint of the terrain, and the centerpoints of the four highest-level quads are also high in the tree.
Continue this thinking down a few more levels, say to level 5 of the tree. If all your 'spikes' were located at one of these nodes, you would be nearly guaranteed to have good looking terrain, since the spikes are so high up in the tree. (BinTrees have anywhere from 10-20 levels, so level 5 is pretty high up there).
Of course, no terrain algorithm so far handles spikes well, but they're good for illustrating this point.
--------- (switch topics) ----------
Now for non-aligned maxima/minima. It's rather a simple problem really. Basically scan the heightmap for the maximum and minimum heights based on a radius. Add all the height samples within a radius of 10 samples (with a circular distance metric, not orthagonal). The height map location with the highest value is the maxima for that radius, the one with the lowest is the minima for that radius.
Now, make a list of the 10 largest values for radius 10, and another list of the 10 smallest values for radius 10. Put all these values into a list of 'important terrain features'.
You could get really spiffy and locate the 5 most important features at radius 5, 7, 10, 13, 15, etc.. (eliminating duplicates). This would give even better definition that using just one radius.
This is not a math-based method like you are describing with aproximating the landscape using polynomials, etc.
--Bryan