sで何ができるかを確認するために、今日実験を行いました<div>
。そこで、s で描画できる簡単な Paint のようなプログラム<div>
を作成しました。
$(window).mousemove(function(e){
if(!mousedown){
return false;
}
var x = e.clientX,
y = e.clientY;
drawDot(x,y,ele);
lastX = x;
lastY = y;
});
これはコードの一部です。動作しますが、ドット間にギャップがあります。そこでfillDot
、点 A (最後の点) から点 B (現在の点) まで線を引くという関数を作成しました。
drawDot(x,y,ele);
fillDot(lastX,lastY,x,y,ele);
function fillDot(lx,ly,x,y,canvas){
var rise = y - ly,
run = x - lx,
slope = rise / run,
yInt = y - (slope * x);
if( lx < x ){
for(var i = lx; i < x ; i+=.5){
var y = slope * i + yInt;
drawDot(i,y,canvas);
}
}else if( x < lx ){
for(var i = x; i < lx ; i++){
var y = slope * i + yInt;
drawDot(i,y,canvas);
}
}
}
水平っぽい線を描いているときだけうまくいきます。上から下または下から上に描くと、まだ隙間があります。同じことができるBresenham's line algorithmと呼ばれるものを見つけましたが、それを使用する方法がわかりません...
間のすべてのポイントを埋める方法はありますか?
ps: があることは知っていますが<canvas>
、 で何ができるかをテストしてい<div>
ます。