p5.js にはタートルグラフィックスを行う関数はないので、「turtle.js」を用意した。
・turtle.js
// ----------------------------------------------
// * タートルグラフィックス・ライブラリ *
// ----------------------------------------------
let LPX, LPY, // 現在位置
ANGLE; // 現在角
function move(leng) {
let x = LPX + leng*Math.cos(Math.PI * ANGLE / 180.0);
let y = LPY - leng*Math.sin(Math.PI * ANGLE / 180.0);
line(LPX, LPY, x, y);
LPX = x; LPY = y;
}
function turn(a) {
ANGLE += a;
ANGLE %= 360;
}
function moveto(x, y) {
line(LPX, LPY, x, y);
LPX = x; LPY = y;
}
function setpoint(x, y) {
LPX = x; LPY = y;
}
function setangle(a) {
ANGLE = a;
}move と turn を実現するためには,描画の現在位置(LP)と現在角を内部的に記憶しておかなければならない.現在位置の座標を(LPX, LPY),現在角をANGLEとすると、この向きに長さlの直線を引いた時の終点は以下のように計算できる。

・ move(leng) 指定長の直線の描画
現在位置(LPX, LPY)から現在角ANGLE(度)の方向に長さlengの直線を引く.反時計まわりの向きを正とする

・moveto(x, y) LPから指定点への直線の描画
LP位置から(x, y)位置に直線を引く

・turn(a) 現在角の回転
現在角をa°回転する.回転後の現在角は0~360°に入るように補正される
・setpoint(x, y) LP位置の設定
現在位置LP(LPX, LPY)を(x, y)に移動する.
・setangle(a) 現在角の設定
現在角をa°に設定する.
1.turtle.jsを利用するには以下のようにする
- turtle.jsをアップロードする

2.index.htmlにturtle.jsの取り込みを記述
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.8.0/p5.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.8.0/addons/p5.sound.min.js"></script>
<script src="turtle.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
<meta charset="utf-8" />
</head>
<body>
<main>
</main>
<script src="sketch.js"></script>
</body>
</html>