【Processing】摩擦力について

公開日:2019-03-08
最終更新:2019-03-08

摩擦力とは

質量を持った物体が動いている時、物体の進行方向と逆向きに働く力のこと。

Processingでの実装

摩擦力は常に速度を一定の割合で減速させる。
なので、速度のベクトルに対する掛け算として実装する。
摩擦力が0の時は速度に変化がなく、摩擦力が1.0が物体が全く動かなくなる最大の摩擦力とする。
これをProcessingで表現すると以下のようになる。

// velocity->速度  
// friction->摩擦力  
velocity.mult(1.0 - friction);

実装例

完成品

アニメーション

コード

// 力  
PVector force;  
// 加速度  
PVector acceleration;  
// 位置  
PVector location;  
// 速度  
PVector velocity;  
// 質量  
float mass;  
// 摩擦力  
float friction;  

void setup() {  
  size(800, 600);  
  frameRate(30);  
  // 位置、速度を初期化  
  location = new PVector(0.0, 0.0);  
  velocity = new PVector(0.0, 0.0);  
  // (3.0, 2.0)の力を加える  
  force = new PVector(3.0, 2.0);  
  // 質量は1.0に設定  
  mass = 1.0;  
  // 摩擦力は0.01に設定  
  friction = 0.01;  
  // 質量と力から加速度を算出  
  // 加速度 = 力 × 質量  
  acceleration = force.mult(mass);  
}  

void draw() {  
  // 背景をフェード  
  fill(0, 31);  
  rect(0, 0, width, height);  

  fill(255);  
  noStroke();  
  // 加速度から速度を算出  
  velocity.add(acceleration);  
  // 摩擦力により速度を変化  
  velocity.mult(1.0 - friction);  
  // 速度から位置を算出  
  location.add(velocity);  
  // 加速度を0にリセット  
  // ※ 等速直線運動のため、加速度は最初の1フレームのみの加算で、  
  // その後は0にリセット  
  acceleration.set(0, 0);  
  // 円を描く  
  ellipse(location.x, location.y, 40, 40);  
}
記事が少しでもいいなと思ったらクラップを送ってみよう!
18
+1
funacchiの技術ブログ。クリエイティブコーディングに興味あります。現在Processingを少しずつ勉強中。

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする