0 1 Down 3 0 1 1 Down Right 3 0 1 0 Right 0 0 1 -1 Up Right 0 0 0 -1 Up 1 0 -1 -1 Up Left 1 0 -1 0 Left 2 0 -1 1 Down Left 2 0 1 0 Right 0 1 1 -1 Up Right 0 1 0 -1 Up 1 1 -1 -1 Up Left 1 1 -1 0 Left 2 1 -1 1 Down Left 2 1 0 1 Down 3 1 1 1 Down Right 3 1 0 -1 Up 1 2 -1 -1 Up Left 1 2 -1 0 Left 2 2 -1 1 Down Left 2 2 0 1 Down 3 2 1 1 Down Right 3 2 1 0 Right 0 2 1 -1 Up Right 0 2 -1 0 Left 2 3 -1 1 Down Left 2 3 0 1 Down 3 3 1 1 Down Right 3 3 1 0 Right 0 3 1 -1 Up Right 0 3 0 -1 Up 1 3 -1 -1 Up Left 1 3 [ [0 1] [1 1] [1 0] [1 -1] [0 -1] [-1 -1] [-1 0] [-1 1] ] |-- 1 ----| |-- 2 -----| |-- 3 -------| |-- 4 ------| Check direction for start index, iterate around, break at first white, we now have our new point, and we check if it's a min or max.