[Javascript] ジグザク線(zig zag line)、波線を描画する
ジグザグ線(波線)を描画する
開始点と終了点を指定し、ジグザグ線を描画する方法。
Javascriptだけでなく他の言語でも応用できる。
<!DOCTYPE HTML>
<html>
<head>
<script>
class Point{
constructor(x,y){
this.x = x;
this.y = y;
}
}
var startP = new Point(50,60);
var endP = new Point(310,350);
window.onload = function(){
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
var zigzagCnt = 10;
var rangeX = (endP.x - startP.x) / zigzagCnt;
var rangeY = (endP.y - startP.y) / zigzagCnt;
ctx.lineWidth = 3;
ctx.strokeStyle = "#FF0000";
ctx.beginPath();
var x = startP.x;
var y = startP.y;
ctx.moveTo(x,y);
var lx, ly, mx, my;
// ジグザグ線描画処理
for (var i = 0; i < zigzagCnt; i++) {
lx = x;
ly = y;
x += rangeX;
y += rangeY;
mx = (lx + x) / 2;
my = (ly + y) / 2;
// ジグザグの幅を調整
scale = Math.sqrt(0.75);
mx += scale * (y - ly);
my -= scale * (x - lx);
ctx.lineTo(mx,my);
ctx.lineTo(x,y);
}
ctx.stroke();
ctx.strokeStyle = "#00FF00";
ctx.beginPath();
ctx.moveTo(startP.x,startP.y);
ctx.lineTo(endP.x,endP.y);
ctx.stroke();
};
</script>
</head>
<body>
<canvas id="myCanvas" width="400" height="400" style="border:1px solid black;">
</canvas>
</body>
</html>


初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発
- 作者: Ethan Brown,武舎広幸,武舎るみ
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/01/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る