ドラッグの軌跡を追う
function onMouseDrag(event){ path.add(event.middlePoint); }
onMouseDragだけ抜粋しました。一つ前の点と現在の点との中点を描画します。
軌跡の両側に点を打つ
function onMouseDrag(event){ var step = event.delta / 2; step.angle += 90; var top = event.middlePoint + step; var bottom = event.middlePoint - step; path.add(top); path.insert(0,bottom); path.smooth(); }
ベクトルを回転
event.deltaは一つ前の点と現在の点とを結ぶベクトルです。stepはそれを半分にしたベクトルになります。これを90度回転させます。
ベクトル方向に点を打つ
topではmiddlePointから回転させたベクトルを延ばしています。bottomでは-stepなので180度反対に延ばしています。
いろいろな線や図形を描画
ジグザクの線
function onMouseDrag(event){ var step = event.delta / 2; step.angle += 90; //step.angle += Math.random() * 360; var top = event.middlePoint + step; var bottom = event.middlePoint - step; path.add(top); path.add(bottom); //path.insert(0,bottom); path.smooth(); }
insertではなくadd
insertではなくaddさせることでtopとbottomを結んでいます。またonMouseUpの処理をなくすことで、線を閉じないようにさせています。
ジグザグに閉じた図形
Paper.js Sketch
fillColorにするとジグザグに閉じた図形を描けます。
path.fillColor = new Color({ hue:Math.random() * 360, saturation:1, brightness:1 });
ぐちゃぐちゃな線
function onMouseDrag(event){ var step = event.delta / 2; //step.angle += 90; step.angle += Math.random() * 360; var top = event.middlePoint + step; var bottom = event.middlePoint - step; path.add(top); //path.add(bottom); path.insert(0,bottom); path.smooth(); }
insertを用いることで、線の太さがぐちゃぐちゃになります。