Walker 在基于像素的形状的边缘

Walker on edge of pixel-based shapes

我想创建一个可以围绕任何形状行走的助行器。形状可以是矩阵中的像素颜色或图形上的选定边。 walker 有两个功能,一是确定下一步,二是移动到下一步。步行者从与形状相邻的某个点开始,并有一个大致的方向(顺时针或逆时针)

关于我应该如何解决这个问题的任何提示?

提示:如果您顺时针旋转,请将右手放在形状上。

这意味着代码需要跟踪助行器的方向。在示例中,步行者最初面朝北(假设顶部为北,右侧为东)。踏出一步,行者还是面朝北

助行器的方向决定代码检查下一个有效移动的顺序,如下面 table 所示:

orientation directions to check
north east, north, west, south
east south, east, north, west
south west, south, east, north
west north, west, south, east

因此必须为助行器指定起始位置、clockwise/counter-clockwise 指示和初始方向。