Marchowes / pyProm

Surface Network Analyzer.
BSD 3-Clause "New" or "Revised" License
6 stars 2 forks source link

FEATURE: Write Saddle Walk #57

Closed Marchowes closed 6 years ago

Marchowes commented 7 years ago

I'll bet this will be harder than I think.

In a nutshell: -Create lookup hash for summits -Iterate through high edges of saddles. -Start with the highest neighbor. -iterate over neighbors, going to the highest of the set -keep track of points (or not?) -Do this until no higher neighbors. This by law is a summit. -Look at hash lookup, find what summit it is. -Add to Saddle Linker

-If two points meet at the same summit and only two high edges, then Saddle is disqualified.

Might become complicated with ponds.

Marchowes commented 7 years ago

-This issue of "Ponds" still has not been addressed yet. -Some Walks fail, need to figure out what. -Linker objects need to keep track of if it was disqualified, and why.

Marchowes commented 7 years ago

1/4/2017: -Walk seems to be working properly, but I am still not sure what to do about ponds. -Fixed a bug for when a walk gets "cornered" which seems to have fixed all dead-end walks. This can be done by way of lookbacks. -Possibly fixed a saddle related bug by iterating diagonally instead of orthogonally. this reduces the number of saddles by about 25% Most of which are bogus saddles. 81k -> 61k This is fantastic news.

Marchowes commented 7 years ago

This is done, tho, it might be worth my time to write a better multipoint blob analysis. Instead of just backtracking. The trade off here is backtracking might actually be faster.

Marchowes commented 7 years ago

At some point forking walks will need to be figured out -- That is walks that reach a multipoint and branch out.

Marchowes commented 7 years ago

How this is going to need to work:

-For every high region, walk to the next highest neighbor starting with the highest one. keep doing this until all high edge points are exhausted. Keep a lookup table of all points traversed and abort as soon as any walks visit them. -If an intermediary multipoint blob is encountered, explore it, and fan out along all high edges. if multiple summits are found, this becomes a new independent linker.