04-07 球の移動

学習日

2025年10月21日

名前

河西恵太

練習問題4-7-1

球体(sphere)を、Y方向に上下に動かしなさい。
一番上または下まで動いたら、跳ね返るようにする。
translate() で位置をずらし、dy を使って上下の移動を制御する。
回転も入れて、立体的に動いているように見せよう。

回答

let x = 0, y = 100, z = 0;
let dx = 10, dy = 10, dz = 10;  // 移動量

function setup() {
  createCanvas(400, 400, WEBGL);
  frameRate(10);
}

function draw() {
  background(200);
  rotateX(frameCount * 0.01);
  translate(x, y, z); 
  sphere(40);
  y += dy;
  if ( y< -160 || 160 < y)  // 跳ね返す
    dy = -dy;
}

練習問題4-7-2

球体を、X・Y・Zのすべての方向に動かしてみよう。
それぞれの方向で、端(−160 または +160)に到達したら、跳ね返るようにする。

translate() を使って球体の位置を3D空間で動かし、
dxdydz を使って速度をコントロールする。
球体は回転させて立体的に見せる。

回答

let x = 100, y = 100, z = 100;
let dx = 10, dy = 10, dz = 10;  // 移動量

function setup() {
  createCanvas(400, 400, WEBGL);
  frameRate(10);
}

function draw() {
  background(200);
  translate(x, y, z); 
  sphere(40);
  rotateX(frameCount * 0.01);
  rotateY(frameCount * 0.01);
  rotateZ(frameCount * 0.01);
  y += dy;
  x += dx;
  z += dz;
  if ( y< -160 || 160 < y)  // 跳ね返す
    dy = -dy;
  if ( x< -160 || 160 < x)  // 跳ね返す
    dx = -dx;
  if ( z< -200 || 200 < z)  // 跳ね返す
    dz = -dz;
}

感想

必要なプログラムなのかいらないのかをしっかりよく見てからプログラムを書かないと思っていた動きとは違う動きになってしまうことがあるので確認していきたいです

コメントする