친절하게도 AtomicRobot에 의해 아래의 코드가 stackoverflow에 주어졌습니다. 는 거리가 동등하게 그려 의자 1,2,4,6,12 다음과 같은 금액을 위대한 작품을 자바 스크립트로 테이블 주위에 의자를 음모하는 것입니다자바 스크립트가있는 정사각형 주위의 점
var x,y;
// amount of chairs
var totalChairs = 12;
// square size
var squareSize = 200;
var chairSize = 60;
// issues with 3,5,7,8,9,10,11
for(var i=0; i<totalChairs; i++){
var angle = 2*Math.PI * i/totalChairs;
if (angle > Math.PI/4 && angle <= Math.PI* 3/4){
x = (squareSize/2)/Math.tan(angle);
y = -squareSize/2 - chairSize/2;
} else if (angle > Math.PI* 3/4 && angle <= Math.PI* 5/4){
x = -squareSize/2 - chairSize/2;
y = (squareSize/2) * Math.tan(angle);
} else if (angle > Math.PI* 5/4 && angle <= Math.PI* 7/4){
x = -(squareSize/2)/Math.tan(angle);
y = -squareSize/2 + squareSize + chairSize/2;
} else {
x = -squareSize/2 + squareSize + chairSize/2;
y = -(squareSize/2) * Math.tan(angle);
}
x -= Math.round(chairSize/2) - squareSize/2;
y -= Math.round(chairSize/2) - squareSize/2;
$("#square").append("<div class='chair' style='left:"+x+"px;top:"+y+"px;'></div>");
}
.
그러나 다음과 같은 금액의 의자 3,5,7,8,9,10,11은 의자 너비로 보이는 것입니다.
이것이 수학이 발생하는 이유를 알려줄 수있는 사람들은 내 강점이 아니며 이에 대한 도움을 주시면 감사하겠습니다. 여기에 8 명의 의자가있는 예를 볼 수 있습니다.
감사
필자가 지금 실제로 이해 완전히 내가 그 일을하고 어떻게 변경이와 진행 상황을 만들고 무슨 일이 하나 벌어과 remander에 함께 문제를 가지고 여전히 맞게 테이블을 확장 할 수 있습니다 특정 사람들을위한 숫자 ????
var x,y;
// amount of chairs
var totalChairs = 18;
var chairSize = 60;
// square size
var squareSize = Math.round(totalChairs/4) * chairSize;
//alert("squareSize: " + squareSize);
// issues with 5,9,13,17,21
// works with 1,2,4,6,12
var remainder = Math.round(totalChairs/4);
var s1 = 0;
var s2 = 0;
var s3 = 0;
var s4 = 0;
for(var i=0; i<totalChairs; i++){
var iter = i;
if(iter+1 <= remainder){
var s1i = s1++;
console.log("s1i: " + s1i);
x = s1i * chairSize;
y = -chairSize;
newr = remainder*2;
} else if(iter+1 <= newr){
var s2i = s2++;
console.log("s2i: " + s2i);
y = s2i * chairSize;
x= squareSize;
newe = remainder*3;
} else if(iter+1 <= newe){
var s3i = s3++;
console.log("s3i: " + s3i);
x = - s3i * chairSize + squareSize - chairSize;
y = squareSize;
}else{
var s4i = s4++;
console.log("s4i: " + s4i);
y = - s4i * chairSize + squareSize - chairSize;
x= -chairSize;
}
$("#square").css({"width":(squareSize) + "px","height":(squareSize) + "px"});
$("#square").append("<div class='chair' style='left:"+Math.round(x)+"px;top:"+Math.round(y)+"px;'><p>"+i+"<br/>x"+x+",y"+y+"</p></div>");
$(".chair").css({"width":(chairSize) + "px","height":(chairSize) + "px"});
}
내가 4 개면 중 하나에 적합 할 필요가 얼마나 많은 알 것 여기 jsfiddle 버전
http://jsfiddle.net/isimpledesign/Ld769/19/
테이블과 의자가 겹치지 않아야합니까? 왜 테이블을 제곱해야합니까? – Raffaele
안녕하세요 Raffaele 우리가 여기서 원과 같은 다양한 모양을 위해 이것을하고있는 것처럼 Raffaele 테이블은 정사각형이되어야합니다. http://jsfiddle.net/jE26S/12/하지만 사각형은 까다로운 증명입니다. 요구 사항은 테이블과 의자가 없을 것입니다. overlap thanks;) – user1503606
예, 원탁이 올바른 선택이 될 것입니다. 제곱을 사용하려면 게재 위치에 대해 더 알려야합니다. 예를 들어, 의자가 * 테이블에 * 터치해야하거나 연속 된 두 개의 의자 센터 사이의 거리가 일정해야하는 경우 – Raffaele