是否有可能创建一个算法,该算法将在2d地图上返回表示主要8个方向的向量的有序列表?我不想硬编码值,如果可能的话也不要使用巨大的if / then / else或case树。
以下是我需要按顺序计算的向量:
0, -1
1, -1
1, 0
1, 1
0, 1
-1, 1
-1, 0
-1, -1
根据下图,我需要先在顶部生成矢量,然后顺时针迭代其余部分:
(我有一个二维数组 - x和y值 - 总共八个字符位置。每个字符从中心开始。我希望能够按顺序生成每个向量,因为我循环遍历字符然后将向量的x和y分量添加到关联角色的位置,以便每个角色在相关方向上从中心向外移动。)
你看到上面这些数字的模式吗?是否有可能设计一个能够以正确的顺序生成这些对的算法,还是我坚持使用硬编码?
答案 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
以获取您列出的顺序。)