【发布时间】:2016-04-10 16:05:51
【问题描述】:
我试图通过首先创建轴向坐标来动态创建有限 n 维坐标系中的位置列表。系统只有整数作为坐标值。轴向坐标是 AxCrd 对象。 AxCrd 对象有两个属性:
- AxCrd.dim 是坐标尺寸的句柄或名称。例如,“x”或“y”。
- AxCrd.crd 是坐标值。它是一个整数。例如,-4 或 3。
我尝试编写一个函数,该函数接受所有生成的 AxCrd 对象作为输入,并输出我试图创建为 Crd 对象的 n 维空间中所有位置的列表。 Crd 对象有两个属性:
Crd.dims 是一个数组,包含坐标的所有维度句柄。这个数组的长度为n,即等于维数。
Crd.crds 是一个数组,包含上述维度的所有坐标值。该数组的顺序很重要,因为坐标的维度应该与坐标值具有相同的元素编号。 IE。如果维度“z”是第二个元素,则 crds[2] 是维度“z”的坐标值。
例如,假设我使用这些构造函数:
function AxCrd(dim,crd) { this.dim = dim, this.crd = crd }
function Crd(dims,crds) { this.dims = dims, this.crds = crds }
在我的实际预期用途中,大多数维度都有九个值:四个负数、四个正数和一个零。但为简洁起见,假设我有三个维度:
var input = [];
input.push(new AxCrd("x", -1));
input.push(new AxCrd("x", 1));
input.push(new AxCrd("y", -1));
input.push(new AxCrd("y", 1));
input.push(new AxCrd("z", -1));
input.push(new AxCrd("z", 1));
input.push(new AxCrd("d", -1));
input.push(new AxCrd("d", 1));
如您所见,共有三个维度,每个维度只有两个坐标值。我正在尝试编写一个函数,根据上述输入,它将创建新的 Crd 对象,如下所示:
var ret = [];
ret.push(new Crd(["x","y","z","d"],[-1,-1,-1,-1]));
ret.push(new Crd(["x","y","z","d"],[ 1,-1,-1,-1]));
ret.push(new Crd(["x","y","z","d"],[-1, 1,-1,-1]));
ret.push(new Crd(["x","y","z","d"],[ 1, 1,-1,-1]));
ret.push(new Crd(["x","y","z","d"],[-1,-1, 1,-1]));
ret.push(new Crd(["x","y","z","d"],[ 1,-1, 1,-1]));
ret.push(new Crd(["x","y","z","d"],[-1, 1, 1,-1]));
ret.push(new Crd(["x","y","z","d"],[ 1, 1, 1,-1]));
ret.push(new Crd(["x","y","z","d"],[-1,-1,-1, 1]));
ret.push(new Crd(["x","y","z","d"],[ 1,-1,-1, 1]));
ret.push(new Crd(["x","y","z","d"],[-1, 1,-1, 1]));
ret.push(new Crd(["x","y","z","d"],[ 1, 1,-1, 1]));
ret.push(new Crd(["x","y","z","d"],[-1,-1, 1, 1]));
ret.push(new Crd(["x","y","z","d"],[ 1,-1, 1, 1]));
ret.push(new Crd(["x","y","z","d"],[-1, 1, 1, 1]));
ret.push(new Crd(["x","y","z","d"],[ 1, 1, 1, 1]));
对于 n 维空间,我如何做到这一点?
【问题讨论】:
标签: javascript arrays algorithm dynamic dimensions