xxxxxxxxxx
function setup() {
createCanvas(500, 500); // キャンバスサイズを設定
background(200, 150, 200); // 背景色を青緑に設定
stroke(50); // 線の色を灰色に設定
var N = 10; // 網目の数
var d = width / N; // 網目の間隔
var amplitude = height / 20; // Sin曲線の振幅
var period = width / 10; // Sin曲線の周期(X方向の長さ)
for (var i = 0; i < N; i++) {
var y = d / 2 + i * d; // 網目のY座標
var dx = i % 2 === 0 ? 0 : PI; // 偶数番目と奇数番目でdxを切り替え
push(); // 描画状態を保存
translate(0, y); // 描画位置を移動
noFill(); // 塗りつぶしをしない
beginShape(); // Sin曲線の頂点を定義
for (var x = 0; x <= width; x++) {
var px = map(x, 0, width, 0, period); // pxの計算
var py = amplitude * sin(px + dx); // pyの計算
vertex(x, py); // Sin曲線の頂点を追加
}
endShape(); // Sin曲線の描画を終了
pop(); // 保存した描画状態を復元
}
}
/*
function setup() {
createCanvas(500, 500);
background(100, 150, 200);
stroke(200);
let N = 10;
let d = width / N;
let amplitude = height / 20;
let period = width / 10;
for (let i = 0; i < N; i++) {
let y = d / 2 + i * d;
let dx = i % 2 === 0 ? 0 : PI;
push();
translate(0, y);
beginShape();
for (let x = 0; x < width; x++) {
let px = map(x, 0, width, 0, period);
let py = amplitude * sin(px + dx);
vertex(x, py);
}
endShape();
pop();
}
}
*/
/*
次の手順に従って、背景色を落ち着いた青緑、線の色を灰色に設定し、網目模様を描画するp5.jsのプログラムを作成してください。
キャンバスサイズを500x500に設定
背景色を青緑(RGB値: 100, 150, 200)に設定
線の色を灰色(RGB値: 200)に設定
変数Nを10とし、網目の数とする
網目の間隔dをキャンバスの幅を網目の数で割った値とする
キャンバスの高さを20で割った値をSin曲線の振幅とする。
キャンバスの幅を10で割った値をSin曲線の周期(X方向の長さ)とする。
0からN-1までの範囲でSin曲線を繰り返し描画
網目のY座標をd / 2 + i * dとする
変数dxを計算し、偶数番目の網目では0、奇数番目の網目ではPI(180度)に設定
push関数を使用して、現在の描画状態を保存
描画位置を移動
塗りつぶしをしない
Sin曲線の頂点を定義
forループを使用して、0からキャンバスの幅までの範囲で繰り返し
pxの計算:X座標を0からperiodの範囲にマッピング
pyの計算:振幅と周期を考慮してSin曲線のY座標を計算
Sin曲線の描画を終了
pop関数を使用して、保存した描画状態を復元
*/