计算导航 2d 地图(数组)的方向(向量)
Calculate directions (vectors) for navigating 2d map (array)
是否可以创建一种算法来 return 表示二维地图上主要八个方向的矢量的有序列表?我不想对这些值进行硬编码,也不想尽可能使用巨大的 if/then/else 或案例树。
这是我需要计算的向量,顺序为:
0, -1
1, -1
1, 0
1, 1
0, 1
-1, 1
-1, 0
-1, -1
根据下图,我需要先在顶部生成向量,然后顺时针迭代其余部分:
(我有一个二维数组 - x 和 y 值 - 总共有八个字符位置。每个字符都从中心开始。我希望能够在循环时按顺序生成每个向量字符,然后将向量的 x 和 y 分量添加到关联字符的位置,以便每个字符沿其关联方向从中心向外移动。)
你从上面的数字中看出规律了吗?是否可以设计一种算法以正确的顺序生成这些对,或者我是否坚持 hard-coding 它们?
这是它的伪代码算法:
for i = 0 to 7
x = ROUND(COS(i*PI/4.0), 0)
y = ROUND(SIN(i*PI/4.0), 0)
next i
ROUND(n,d)函数与Excel公式函数相同
当然,使用COS/SIN效率非常低。
此外,如果您需要特定的订单,您可能需要 fiddle。 (我认为将循环更改为 for i = 4 to -3 step -1
以获得您列出的顺序)。
是否可以创建一种算法来 return 表示二维地图上主要八个方向的矢量的有序列表?我不想对这些值进行硬编码,也不想尽可能使用巨大的 if/then/else 或案例树。
这是我需要计算的向量,顺序为:
0, -1
1, -1
1, 0
1, 1
0, 1
-1, 1
-1, 0
-1, -1
根据下图,我需要先在顶部生成向量,然后顺时针迭代其余部分:
(我有一个二维数组 - x 和 y 值 - 总共有八个字符位置。每个字符都从中心开始。我希望能够在循环时按顺序生成每个向量字符,然后将向量的 x 和 y 分量添加到关联字符的位置,以便每个字符沿其关联方向从中心向外移动。)
你从上面的数字中看出规律了吗?是否可以设计一种算法以正确的顺序生成这些对,或者我是否坚持 hard-coding 它们?
这是它的伪代码算法:
for i = 0 to 7
x = ROUND(COS(i*PI/4.0), 0)
y = ROUND(SIN(i*PI/4.0), 0)
next i
ROUND(n,d)函数与Excel公式函数相同
当然,使用COS/SIN效率非常低。
此外,如果您需要特定的订单,您可能需要 fiddle。 (我认为将循环更改为 for i = 4 to -3 step -1
以获得您列出的顺序)。