implement 3 three mode, and improve the efficient, haven't run, yet
full and spherical mode is ok, diagonal is not
all done