キャンバスにシームレスなパターンを作成したい。プロセス全体を単純な長方形に単純化しました。長方形をキャンバスの端に近づけて描いたときに、一部が切り取られた場合、その欠けた部分を反対側で繰り返してほしい。
描画する四角形が端に近すぎるかどうかを確認し、もう一度描画します + canvas.width/height. 途中で、これがかなりのif
秒数になる可能性があることに気付きました。
これは私がすでに持っているものです:
これはエッジをチェックする部分です。
// 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にあります。