c# - 如何将8个方向映射到一维数组

标签 c# arrays math

我在屏幕上有 8 个方向的 8 个光标。

directions on screen

我想将它们放入数组中并根据方向向量选择它们。顺序无关紧要,但我需要为上面看到的每个向量分配一维数组中的 i 坐标。我花了很长时间试图发明它的公式,但没有任何效果。

向量中的值可以是0,1,-1

伪代码:

Cursor getCursor(int x, int y) {
    int i = TheFunctionINeed(x,y);
    return cursors[i];
}

注意:因为很多人对我想要什么感到困惑,所以我使用了the answer制作以下 fiddle :Mapping vectors to array.

最佳答案

它包含 9 个元素,为了简单起见,我添加了 (0, 0)。

a = {(-1, -1),  (-1, 0),  (-1, 1),  (0, -1),  (0, 0),  (0, 1),  (1, -1),  (1, 0),  (1, 1)}


ZeroBasedIndex(x, y) = (x + 1) * 3 + (y + 1)

关于c# - 如何将8个方向映射到一维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26736500/

相关文章:

ios - 将 NSUserDefaults 与结构类型的数组一起使用

javascript - 从 n 个项目的数组中一次显示 5 个项目,然后再次从 angularjs 中的 biginning 重复

excel - 用Excel随机生成x个整数与y的和

java - Java的快速超越/三角函数

c# - 部署 .NET C++/CLI DLL 的先决条件?

c# - 在 C# 中将一个 DataView 添加到另一个

c# - 如何删除使用 string.Replace ("-", ""后剩余的空间)

arrays - 如何在 ruby​​ 中对文件名进行排序?

python - 如何使用 Python 求解具有 16 个未知数的 4 x 4 数组(更新)

c# - HttpWebRequest 无法通过代理连接?