【发布时间】:2015-08-26 07:01:37
【问题描述】:
我目前正在尝试使用 JavaScript 在 HTML5 画布上编写斐波那契数列动画。
我已经计算了斐波那契数,并且能够将正方形添加到网格布局中。我遇到的麻烦是能够计算偏移量,因此它们会自动很好地并排排列在一起。有没有人知道如何实现这一点。
这是我的 JavaScript 代码:
var canvas;
var context;
function init(){
canvas = document.getElementById('canvas');
context = canvas.getContext('2d');
drawgrid();
drawlines();
}
function drawgrid(){
context.strokeStyle="LightGrey";
for(var i = 0; i < 600; i+=20){
context.beginPath();
context.moveTo(i, 0);
context.lineTo(i, 600);
context.stroke();
context.beginPath();
context.moveTo(0, i);
context.lineTo(600, i);
context.stroke();
}
}
function drawlines(){
context.strokeStyle="blue";
var startLeft = (canvas.width / 2) - 20;
var startTop = (canvas.height / 2) - 20;
var first = 1;
var second = 1;
var next = 0;
var c = 0;
var count = 0;
for (var i = 0; i < 5; i++){
if ( c <= 1 ){
next = 1;
}else{
next = first + second;
first = second;
second = next;
}
c++;
next *= 20;
//This is a minor attempt at offsetting which does not work what so ever
switch(count) {
case 1:
startLeft += next;
break;
case 2:
startTop-=next;
break;
case 3:
startTop -= next - 20;
startLeft -= next;
break;
case 4:
startTop += next - 80;
startLeft += next - 160;
break;
}
context.beginPath();
context.rect(startLeft,startTop,next,next);
context.stroke();
count++;
if (count > 4){
count = 1;
}
startLeft = (canvas.width / 2) - 20;
startTop = (canvas.height / 2) - 20;
}
}
【问题讨论】:
-
你能把某种 JSFiddle 放在一起吗?当我尝试重现此内容时,我只是得到一个空白屏幕。
-
@alex 是的,对不起。给你...jsfiddle.net/schoolboytom/73prkp8L
标签: javascript html fibonacci