LoginSignup
5
8

More than 5 years have passed since last update.

運動方程式とモーション

Last updated at Posted at 2017-09-12

Nature of codeを勉強中です。
Nature of codeの「力の章/自律エージェントの章」のメモです。

Nature of code
http://natureofcode.com/
p5.jsのソース
https://github.com/shiffman/The-Nature-of-Code-Examples-p5.js

力と加速度

質量に加速度をかけると、力になる

f = m * a
a = f / m

fとaはベクトル、mはスカラー。
簡易的にm = 1 とすれば、 f = a でいける、ともいえる。

コードはこんな。

  • 力を加えると加速度が増す
  • 毎回update()内で速度に加速度分を加算したら0にする
applyForce(force) {
  var f = p5.Vector.div(force, this.mass); |
  this.acceleration.add(f);
}

update(){
  this.velocity.add(this.acceleration);
  this.position.add(this.velocity);
  this.acceleration.mult(0);
}

重力を使う場合、このように呼ぶ。

function draw() {
 let gravity = createVector(0, 0.1);
 m.applyForce(gravity);
 m.update();
}

例:摩擦 (friction)の加え方

摩擦は
f = -1 * μ * N * v
であらわされる
muは定数。Nは抗力、vは速度

仮に抗力を1で不変とした場合、速度の大きさに比例した逆方向の力を加えることになる。

加わる力は一貫してaddForceで与えるようにしておく。mover.addForce(friction);

例:万有引力を加える

これもaddForceで与える。 mover.addForce(gravity);

操舵行動

舵をきり、目的地に到着するような動き。

基本

  • 現在の速度ベクトルv1に対し
  • 目的地へたどり着くような、理想の速度ベクトルv2を定義する。
  • v2は、よしなに弱めておく(maxSpeedで制限)
  • (v2-v1)方向に進むような力v3をaddForceするのだが、これもよしなに弱める(maxForceで制限)
  • 弱めることによって、味のある動き、生きてるっぽい動きになる

到着行動

目的地に近づくにしたがってmaxSpeedを下げる

5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8