计算导航2d地图(数组)的方向(向量)

时间:2017-07-10 23:09:45

标签: arrays algorithm vector 2d

是否有可能创建一个算法,该算法将在2d地图上返回表示主要8个方向的向量的有序列表?我不想硬编码值,如果可能的话也不要使用巨大的if / then / else或case树。

以下是我需要按顺序计算的向量:

0, -1
1, -1
1, 0
1, 1
0, 1
-1, 1
-1, 0
-1, -1

根据下图,我需要先在顶部生成矢量,然后顺时针迭代其余部分:

Diagram

(我有一个二维数组 - x和y值 - 总共八个字符位置。每个字符从中心开始。我希望能够按顺序生成每个向量,因为我循环遍历字符然后将向量的x和y分量添加到关联角色的位置,以便每个角色在相关方向上从中心向外移动。)

你看到上面这些数字的模式吗?是否有可能设计一个能够以正确的顺序生成这些对的算法,还是我坚持使用硬编码?

1 个答案:

答案 0 :(得分:1)

这是一个伪代码算法:

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以获取您列出的顺序。)