我試圖通過首先創建軸座標來動態創建有限n維座標系中的位置列表。該系統只有整數作爲座標值。軸座標是AxCrd對象。 AxCrd對象具有兩個屬性:從軸向座標動態創建一個有整數座標的有限n維座標系
- AxCrd.dim是座標的維的句柄或名稱。例如,「x」或「y」。
- AxCrd.crd是座標的值。這是一個整數。例如,-4或3.
我試過編寫一個函數,它接受所有生成的AxCrd對象作爲輸入,並輸出n維空間中所有位置的列表試圖創建爲Crd對象。 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 }
在我的實際用途,大部分的尺寸有九個值:4負,四個正和一個零。但爲了簡便起見,假設我有三個尺寸,使得:
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維空間?
在我創建的「遊戲」或人工智能中,每個座標都應該具有「道德價值」。您可能想將其視爲「分數」。也就是說,玩家通過移動或移動到某個座標獲得某個得分。我想預先計算這些分數,以便爲計算機編寫代碼以便找到最佳的移動方式。我打算將預先計算的分數添加爲Crd對象的屬性。 –