有人可以查看这段代码并指出为什么生成的巴恩斯利蕨分形看起来不正确吗?
function barnsley (ctx) {
ctx.fillStyle = 'green';
ctx.translate(ctx.canvas.width/2,ctx.canvas.height/2);
var self = this;
this.itts = 100000;
this.ittsCount = 0;
this.x = 0;
this.y = 0;
this.main = function () {
for (var i=0;i<itts;i++) {
var rand = Math.random()*100;
if (rand < 1) {
self.one();
} else if (rand < 86) {
self.two();
} else if (rand < 94) {
self.three();
} else {
self.four();
}
}
}
this.one = function () {
var xn = self.x;
var yn = self.y;
var zx = 0;
var zy = 0.16 * yn;
self.drawPoint(zx,zy);
}
this.two = function () {
var xn = self.x;
var yn = self.y;
var zx = 0.85 * xn + 0.4 * yn;
var zy = -0.04 * xn + 0.85 * yn + 1.6;
self.drawPoint(zx,zy);
}
this.three = function () {
var xn = self.x;
var yn = self.y;
var zx = 0.2 * xn - 0.26 * yn;
var zy = 0.23 * xn + 0.22 * yn + 1.6;
self.drawPoint(zx,zy);
}
this.four = function () {
var xn = self.x;
var yn = self.y;
var zx = -0.15 * xn + 0.28 * yn;
var zy = 0.26 * xn + 0.24 * yn + 0.44;
self.drawPoint(zx,zy);
}
this.drawPoint = function (xn,yn) {
self.x = xn;
self.y = yn;
ctx.fillRect(xn*20,-yn*20,1,1);
}
this.main();
}
它具有正确的一般形状,但我必须遗漏一些东西,我已经检查了算法等但无济于事。任何帮助是极大的赞赏。