是否可以创建一种算法,返回表示二维 map 上主要八个方向的有序向量列表?我不想对这些值进行硬编码,也不想尽可能使用巨大的 if/then/else 或 case 树。
以下是我需要按顺序计算的向量:
0, -1
1, -1
1, 0
1, 1
0, 1
-1, 1
-1, 0
-1, -1
根据下图,我需要先在顶部生成向量,然后顺时针迭代其余部分:
(我有一个二维数组 - x 和 y 值 - 总共有八个字符位置。每个字符都从中心开始。我希望能够按顺序生成每个向量,因为我循环遍历字符然后将向量的 x 和 y 分量添加到关联字符的位置,以便每个字符从中心沿其关联方向向外移动。)
您从上面的数字中看出规律了吗?是否可以设计一种算法以正确的顺序生成这些对,或者我是否坚持对它们进行硬编码?
最佳答案
这是它的伪代码算法:
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 是非常低效的。
此外,如果您想要特定的订单,您可能需要摆弄它。 (我认为将循环更改为 for i = 4 to -3 step -1
以获得您列出的顺序)。
关于arrays - 计算导航 2d map (数组)的方向(向量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45022990/