0
지도상의 다양한 점을 플로팅하는 TSP 응용 프로그램에서 작업하고 있습니다. 한 번에 한 번만 플롯 할 수있는 각각의 가능한 조합이 필요합니다. 아래의 코드는 논리적으로 나에게 의미가 있지만, 몇 번 돌릴 수는 없지만, 의미가있는 것보다 몇 배나 적습니다.JavaScript 함수가 몇 번의 실행 후에 여러 숫자 조합의 모든 다른 조합을 그릴 수있는 이유
var dogs = [];
var totalDogs = 9;
var prevComps = [];
var count = 0;
function setup() {
//Define the canvas
createCanvas(700, 575);
//Generate a random vector position for each dog
for (var i = 0; i < totalDogs ; i++){
var vectorPoints = createVector(random(width), random(height));
dogs[i] = vectorPoints;
}
}
function draw() {
//Sets the background to black and the circles (ellipses) to white
background(0);
fill(255);
for (var i = 0; i < dogs.length; i++){
ellipse(dogs[i].x, dogs[i].y, 8, 8);
}
//Defines the lines/paths
stroke(255);
strokeWeight(2);
noFill();
beginShape();
//Draw every dog on the map at their randomly generated vector point
for (var i = 0; i < dogs.length; i++){
vertex(dogs[i].x, dogs[i].y);
}
endShape();
//Creates two random numbers within the range of our array and swaps them
var i = floor(random(dogs.length));
var j = floor(random(dogs.length));
//Creates an array, stores the random numbers there to be compared and creates an "isNew" bool to determine if this pair has already been created
var comp = [];
comp.push(i);
comp.push(j);
var isNew = true;
//Checks to see if the new combo has been used before and thus stored in our previous comparison array
for(l = 0; l < prevComps.length; l++){
if(prevComps[l][0] == comp[0] && prevComp[l][1] == comp[1]){
isNew = false;
}
}
//If isNew is still true, the combination must be unique and so increase our count, add it to the prevComp array and finally swap the elements
if(isNew == true){
count++;
prevComps.push(comp);
//testing purposes
document.getElementById("demo").innerHTML = count;
swap(dogs, i, j)
}
}
//Simple swap function
function swap(a, i, j){
var tempVar = a[i]
a[i] = a[j];
a[j] = tempVar;
}
나는이 코드에 주석을 달았으며, 읽을 수 있으면 좋겠다. 어떤 공백도 채우면 기쁠 것이다.
차례를 구성하는 코드를 표시 할 수 있습니까? draw 기능을 무엇이라고 부릅니까? 또한 타원, 정점 등의 기능을 게시 할 가치가 있습니다. 따라서 캔버스 그리기 코드가 올바르게 작동하는지 확인할 수 있습니다. – agmcleod
'개'가 비어있는 것처럼 보입니다. 어디서나 '개'로 밀고가는 것을 볼 수 없습니다. 루프에서 console.log는 진행 상황을 추적하는 데 유용합니다. – mjwatts
실제로 draw 함수를 호출하는 것이 확실치 않습니다. JS에 매우 익숙하며 그리기 함수가 호출되는 방식이 특이하다고 생각했습니다. 실제로 아무데도 불리지 않고 있음에도 불구하고. 이것은 단순히 완전히 다른 빈 색인 페이지에 링크 된 자바 스크립트 스크립트 파일입니다. 당신이 언급 한 그림 함수에 p5 자바 스크립트 라이브러리를 사용합니다. – jamezyx