我想在画布上创建无缝图案。我将整个过程简化为简单的矩形。当靠近画布边缘绘制一个矩形并且它的一部分被切断时,我希望在另一侧重复缺失的部分。
我想我只是检查要绘制的矩形是否离边缘太近,然后再次绘制+canvas.width/height。中途我意识到这可能会变成相当多if
的 s。
这是我已经拥有的:
这是我检查边缘的部分。
// this._draw(); is a convenience method that draws the rectangle with
// the center as its registration point instead of top left corner.
// which is also why I add (this.size/2) to the coordinates.
if(this.x+( this.size/2 ) > canvas.width) {
this._draw(
this.x+canvas.width,
this.y
);
}
if(this.x-( this.size/2 ) < 0){
this._draw(
this.x+canvas.width,
this.y
);
}
if(this.y+( this.size/2 ) > canvas.height) {
this._draw(
this.x-(this.size/2),
this.y-canvas.height-(this.size/2)
)
}
if(this.y-(this.size/2) < 0){
this._draw(
this.x,
this.y+canvas.height
);
}
这就是我要的
有什么聪明的方法可以更有效地检查吗?我确信有一种比我目前所指的更优雅的方法。
整个示例在codepen.io上。