Date: 1992-07-12
From: Paul
Subject: Re: Shoreline Scattering

1) Go back and identify the "shoreline zone", all coordinates that are either land adjacent to sea or sea adjacent to land.

I *think* this part is easy enough. What's your reasoning behind including in the new list the "sea-adjacent-to-land" locations?

2) Delete all shoreline zone assignments and consider the new blank space AT TEN TIMES THE RESOLUTION as a new world. That is, each deleted coordinate is now treated as a ten by ten block of unassigned micro-coordinates.

What do we start out with here? Is each 10x10 block treated individually, or are several grouped together? It seems we would want to go through one generation process for each continent's shoreline. Is this your intent? Then we need an algorithm to isolate the shoreline for each land mass, right?

[Later: Maybe your intent is to blow up the *entire* world to high resolution, and run the algorithm the second time against the new hi-res world. Algorithmically this is trivially easy, but I can see two problems: 1) Memory consumption will be fierce, maybe impossibly so, 2) Even on my IIci performance will be lousy, maybe unbearable.]

3) Insert one land micro-spark adjacent to the inland for each deleted land coordinate. 4) Apply the standard growing algorithm to that set of sparks until the entire unassigned coastal space is filled! In essence, what we are doing is growing micro continents along the edges of macro continents. Since each micro-spark starts adjacent to the existing landmass, new microland will extend into the sea. What do you think? If I get a chance, I will try to experiment with this technique in HyperCard, but that will probably take eons.

I think I like the idea a lot.

I'm hoping that this algorithm will not be too difficult to execute in C. You should be able to use existing subroutines to do the micro-generation with only minor refitting. You will need some kind of micro/macro mode to switch between the two coordinate systems.

If you can clear up my confusion, it may work out as fairly easy to implement this in Think C.

Please get back to me ASAP with comments/questions. If needed I will try to provide more specifics. I am eager to see if this technique will actually work!

Me too!