alimaye / sun-fan-delta-model

GNU General Public License v3.0
0 stars 0 forks source link

Diagonal crossover channels --- should this be allowed? #24

Closed amoodie closed 3 years ago

amoodie commented 3 years ago

@alimaye pointed out a diagonal crossover case in channel routing. I agree that this is unrealistic, but what is the mention of this in the original paper?

image

Question is should we prohibit these crossover channels from forming?

If we do want to prevent them, my suggestion is that the simplest way to prevent them is to hook on to the forbiddenCells approach in propagateAvulsion and simply prohibit diagonal crossover forming during avulsion pathfinding. Something like

if sum(self.channelFlag(N, E)) ==2
  slope(NE) = NaN
elseif ...
...
...

would work and be fast enough (avulsion pathfinding isn't so common that is should matter.

I'll take a closer look at the intersection finding, but I'm struggling to think how it would be implemented: once you find an intersection, how do you disconnect the looped section? You would still need to walk the pathway from the intersection, and unmark the various arrays along the way, I think. Likely, I'm just missing something there though.

Originally posted by @amoodie in https://github.com/alimaye/sun-fan-delta-model/issues/9#issuecomment-898631336

alimaye commented 3 years ago