Multidimensional Array to path
Hi I have a multidimensional array of 1ns and 0es. the 0es are ordered into a mass that I wish to extrude into a shape using 3js. Unfortunately to extrude 3js requires a path when defining a shape object not a multidimensional array. I am using JQuery and 3js.
E.G.
[0,0,0,1,0,
0,0,1,1,0
0,1,1,0,0]
to become
moveTo(X,Y)
lineTo(X,Y)
so on and so forth
I am using this to auto generate a cave system.
this is my current attempt
function toPath(array){
for (var i=0;i<array.length;i++){
for (var j=0;j<array[i].length;j++){
if (array[i][j]===0 && countAliveNeighbours(array, i, j)>0){
points[i+":"+j]=[false,false,false,false];//lurd
if ((i+1)>0 && (i+1)<array.length){//right
if (array[i+1][j]===1){
points[i+":"+j][2]=true;
}
}
if ((i-1)>0 && (i-1)<array.length){//left
if (array[i-1][j]===1){
points[i+":"+j][0]=true;
}
}
if ((j+1)>0 && (j+1)<array[i].length){//down
if (array[i][j+1]===1){
points[i+":"+j][3]=true;
}
}
if ((j-1)>0 && (j-1)<array[i].length){//up
if (array[i][j-1]===1){
points[i+":"+j][1]=true;
}
}
}
}
}
return points;
}
var template=toPath(array);
var caveBase = new THREE.Shape();
for (var property in template){
var points=property.split(":");
var X=points[0]*3;
var Y=points[1]*3;
caveBase.moveTo(X,Y);
var directions=template[property];
if (directions[0]){caveBase.moveTo(X-1,Y+1);caveBase.lineTo(X-1,Y-1);}
if (directions[1]){caveBase.moveTo(X-1,Y-1);caveBase.lineTo(X+1,Y-1);}
if (directions[2]){caveBase.moveTo(X+1,Y+1);caveBase.lineTo(X+1,Y-1);}
if (directions[3]){caveBase.moveTo(X-1,Y+1);caveBase.lineTo(X+1,Y+1);}
}
javascript three.js
add a comment |
Hi I have a multidimensional array of 1ns and 0es. the 0es are ordered into a mass that I wish to extrude into a shape using 3js. Unfortunately to extrude 3js requires a path when defining a shape object not a multidimensional array. I am using JQuery and 3js.
E.G.
[0,0,0,1,0,
0,0,1,1,0
0,1,1,0,0]
to become
moveTo(X,Y)
lineTo(X,Y)
so on and so forth
I am using this to auto generate a cave system.
this is my current attempt
function toPath(array){
for (var i=0;i<array.length;i++){
for (var j=0;j<array[i].length;j++){
if (array[i][j]===0 && countAliveNeighbours(array, i, j)>0){
points[i+":"+j]=[false,false,false,false];//lurd
if ((i+1)>0 && (i+1)<array.length){//right
if (array[i+1][j]===1){
points[i+":"+j][2]=true;
}
}
if ((i-1)>0 && (i-1)<array.length){//left
if (array[i-1][j]===1){
points[i+":"+j][0]=true;
}
}
if ((j+1)>0 && (j+1)<array[i].length){//down
if (array[i][j+1]===1){
points[i+":"+j][3]=true;
}
}
if ((j-1)>0 && (j-1)<array[i].length){//up
if (array[i][j-1]===1){
points[i+":"+j][1]=true;
}
}
}
}
}
return points;
}
var template=toPath(array);
var caveBase = new THREE.Shape();
for (var property in template){
var points=property.split(":");
var X=points[0]*3;
var Y=points[1]*3;
caveBase.moveTo(X,Y);
var directions=template[property];
if (directions[0]){caveBase.moveTo(X-1,Y+1);caveBase.lineTo(X-1,Y-1);}
if (directions[1]){caveBase.moveTo(X-1,Y-1);caveBase.lineTo(X+1,Y-1);}
if (directions[2]){caveBase.moveTo(X+1,Y+1);caveBase.lineTo(X+1,Y-1);}
if (directions[3]){caveBase.moveTo(X-1,Y+1);caveBase.lineTo(X+1,Y+1);}
}
javascript three.js
You need to add your expected result with details. i. e. instead ofX
andY
you should provide the exact values you are expecting based on the input array. You also need to include the code you tried so far.
– shawon191
Mar 6 '18 at 2:29
Where's your attempt? What have you tried so far?
– Scott Sauyet
Mar 6 '18 at 3:02
add a comment |
Hi I have a multidimensional array of 1ns and 0es. the 0es are ordered into a mass that I wish to extrude into a shape using 3js. Unfortunately to extrude 3js requires a path when defining a shape object not a multidimensional array. I am using JQuery and 3js.
E.G.
[0,0,0,1,0,
0,0,1,1,0
0,1,1,0,0]
to become
moveTo(X,Y)
lineTo(X,Y)
so on and so forth
I am using this to auto generate a cave system.
this is my current attempt
function toPath(array){
for (var i=0;i<array.length;i++){
for (var j=0;j<array[i].length;j++){
if (array[i][j]===0 && countAliveNeighbours(array, i, j)>0){
points[i+":"+j]=[false,false,false,false];//lurd
if ((i+1)>0 && (i+1)<array.length){//right
if (array[i+1][j]===1){
points[i+":"+j][2]=true;
}
}
if ((i-1)>0 && (i-1)<array.length){//left
if (array[i-1][j]===1){
points[i+":"+j][0]=true;
}
}
if ((j+1)>0 && (j+1)<array[i].length){//down
if (array[i][j+1]===1){
points[i+":"+j][3]=true;
}
}
if ((j-1)>0 && (j-1)<array[i].length){//up
if (array[i][j-1]===1){
points[i+":"+j][1]=true;
}
}
}
}
}
return points;
}
var template=toPath(array);
var caveBase = new THREE.Shape();
for (var property in template){
var points=property.split(":");
var X=points[0]*3;
var Y=points[1]*3;
caveBase.moveTo(X,Y);
var directions=template[property];
if (directions[0]){caveBase.moveTo(X-1,Y+1);caveBase.lineTo(X-1,Y-1);}
if (directions[1]){caveBase.moveTo(X-1,Y-1);caveBase.lineTo(X+1,Y-1);}
if (directions[2]){caveBase.moveTo(X+1,Y+1);caveBase.lineTo(X+1,Y-1);}
if (directions[3]){caveBase.moveTo(X-1,Y+1);caveBase.lineTo(X+1,Y+1);}
}
javascript three.js
Hi I have a multidimensional array of 1ns and 0es. the 0es are ordered into a mass that I wish to extrude into a shape using 3js. Unfortunately to extrude 3js requires a path when defining a shape object not a multidimensional array. I am using JQuery and 3js.
E.G.
[0,0,0,1,0,
0,0,1,1,0
0,1,1,0,0]
to become
moveTo(X,Y)
lineTo(X,Y)
so on and so forth
I am using this to auto generate a cave system.
this is my current attempt
function toPath(array){
for (var i=0;i<array.length;i++){
for (var j=0;j<array[i].length;j++){
if (array[i][j]===0 && countAliveNeighbours(array, i, j)>0){
points[i+":"+j]=[false,false,false,false];//lurd
if ((i+1)>0 && (i+1)<array.length){//right
if (array[i+1][j]===1){
points[i+":"+j][2]=true;
}
}
if ((i-1)>0 && (i-1)<array.length){//left
if (array[i-1][j]===1){
points[i+":"+j][0]=true;
}
}
if ((j+1)>0 && (j+1)<array[i].length){//down
if (array[i][j+1]===1){
points[i+":"+j][3]=true;
}
}
if ((j-1)>0 && (j-1)<array[i].length){//up
if (array[i][j-1]===1){
points[i+":"+j][1]=true;
}
}
}
}
}
return points;
}
var template=toPath(array);
var caveBase = new THREE.Shape();
for (var property in template){
var points=property.split(":");
var X=points[0]*3;
var Y=points[1]*3;
caveBase.moveTo(X,Y);
var directions=template[property];
if (directions[0]){caveBase.moveTo(X-1,Y+1);caveBase.lineTo(X-1,Y-1);}
if (directions[1]){caveBase.moveTo(X-1,Y-1);caveBase.lineTo(X+1,Y-1);}
if (directions[2]){caveBase.moveTo(X+1,Y+1);caveBase.lineTo(X+1,Y-1);}
if (directions[3]){caveBase.moveTo(X-1,Y+1);caveBase.lineTo(X+1,Y+1);}
}
javascript three.js
javascript three.js
edited Nov 20 '18 at 2:24
Cœur
17.6k9104145
17.6k9104145
asked Mar 6 '18 at 2:25


Oscar AmesOscar Ames
11
11
You need to add your expected result with details. i. e. instead ofX
andY
you should provide the exact values you are expecting based on the input array. You also need to include the code you tried so far.
– shawon191
Mar 6 '18 at 2:29
Where's your attempt? What have you tried so far?
– Scott Sauyet
Mar 6 '18 at 3:02
add a comment |
You need to add your expected result with details. i. e. instead ofX
andY
you should provide the exact values you are expecting based on the input array. You also need to include the code you tried so far.
– shawon191
Mar 6 '18 at 2:29
Where's your attempt? What have you tried so far?
– Scott Sauyet
Mar 6 '18 at 3:02
You need to add your expected result with details. i. e. instead of
X
and Y
you should provide the exact values you are expecting based on the input array. You also need to include the code you tried so far.– shawon191
Mar 6 '18 at 2:29
You need to add your expected result with details. i. e. instead of
X
and Y
you should provide the exact values you are expecting based on the input array. You also need to include the code you tried so far.– shawon191
Mar 6 '18 at 2:29
Where's your attempt? What have you tried so far?
– Scott Sauyet
Mar 6 '18 at 3:02
Where's your attempt? What have you tried so far?
– Scott Sauyet
Mar 6 '18 at 3:02
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f49122478%2fmultidimensional-array-to-path%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f49122478%2fmultidimensional-array-to-path%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
You need to add your expected result with details. i. e. instead of
X
andY
you should provide the exact values you are expecting based on the input array. You also need to include the code you tried so far.– shawon191
Mar 6 '18 at 2:29
Where's your attempt? What have you tried so far?
– Scott Sauyet
Mar 6 '18 at 3:02