「がんばれない」けど「がんばりたい」

ITエンジニアの仕事のこと。AI、機械学習、ディープラーニング。地頭力。車のこと。

Programming Interactivity #3 〜Vector (1)〜

ベクトルの概念をProgramming Interactiveで勉強

  • force:力
  • vector:方向量
  • velocity:速さ
  • acceleration:加速
  • mass:質量

理解がだいぶまとまったと思うので、。。

1.ベクトル
  オブジェクトの「力」とその「方向」を計算して決定するのに使われる

2.ベクトルを持つオブジェクトのプロパティ

  • Location: 位置(座標)
  • Velocity: 速さ
  • Velocity: 加速度

3.オブジェクトを動かす
  下記の作業を行う事で、オブジェクトの新しい位置が決定する。

  • 「場」に力を与える(※力=風、重力など)
    その「場」に存在させたいの基本となる力
    ※「場」に力を与える事は、プログラム上ではオブジェクトに与える事になる。
  • オブジェクトの位置(Location)値を直接変更しない
  • 「速さ」「加速度」を変更する

, you'll need to add forces to the Ball to represent wind, gravity, and any other elements that you might want to use. The localtion vector shouldn't be manipulated, but the velocity and acceleration should, since those are the values that will be used to determine the new position of the Ball when the draw() method is called.

4.動きと質量
  オブジェクトの動き(位置、速度、加速度)を変更するには、
  オブジェクトに「力」を与える事を行う。
  その力の値の決定には、そのオブジェクトの質量が関連する。
  数学的には、3.で説明した「場(自分で決めた力)」を
  質量で割る事で得られる値をオブジェクトに与える。

To accurately represent the way that the mass of an object affects its movement, you need to modify the force using the mass. Mathematically, this is done by dividing the force vector by the mass.

5.加速度値の変更
  4.で、オブジェクトの動きを変更するには、
  質量で決めた力をオブジェクトに与えると書いた。
  繰り返しにはなるが、具体的には、
  「位置」「速度」「加速度」の値を変更する事となる。

  この3つのファクタを変更するのには、まず、
  加速度を変更する。
  計算としては、4.で決まった力を現在の加速度に加える事になる。

  accelerataion += newForce;

4.で決まった力がマイナスな力であれば、オブジェクトの速度は、
  減速するし、プラスな力であれば、加速していく。

  つまり、この加速度を変更する事が動きを変更するための
  エントリーポイントとなる。
  加速度を変更する事により、その他の値も変更される。

The acceleration of the Ball also needs to be modified by the force; a negative force slows the acceleration, and a positive force accelerates it.This is done mathematically by adding the new force vector to the acceleration vector to ensure that all the values of the acceleration are affected:

Now that new forces can modify the object's acceleration, all that's left to do is make a method that can do all the necessary calculations in each the frame of the animation. This is going to be broken into two methods to make it more readable and better organized.
これで新たな力がオブジェクトの加速度を変更できるようになりました。