Unity:物理 回転 クォータニオン

今回は結構むずい クォータニオンの話です。

 

Unity:物理 回転

オブジェクトをくるくる回してみます。

インスペクターから回転速度を調整できるようにpublic としてspeedを定義します。

ステップはconst で定義しておきます。

左クリックを検出するために if (Input.GetMouseButton(0))します。

今回はUnity標準のrigidbodyを使わせていただきます。

角速度はアトリビュートangularVelocityに格納されているのでこれをいじります。

 

Unity:物理 自由落下

今日は、Unityを使って簡単な物理計算をやってみようと思います。

跳ねるボールを作ってみます。

Unity上で球を上空へ配置した状態で、下記のスクリプトをアタッチします。

ゲットコンポーネントしますがUnityのrigidbodyは使用せずにMyRigidbodyというスクリプトを自分で定義します。

MyRigidbodyの中では加速度 速度 位置について時間ごとの計算を行います。

後に次のスクリプトでAddForceメソドを定義しますが、これで任意の方向に力を加えることができます。ここでは重力加速度になるようにy = -9.8としました。

通常のrigidbodyでgravityを定義できますが、今回はなるべく自分で定義していくことをコンセプトとしています。

球にアタッチする2つ目のスクリプトとしてMyRigidbodyを定義します。

加速度 速度 位置の変数をVector3型で用意します。

ステップ幅を1/60sとします。ここを1/600とすると 1/10スローモーションとして演算できます。

初期化のところでは、オブジェクトのtrasform.positionを取得するだけです。

AddForceメソドをpublicとして定義します。1つ目のスクリプトで読み込めるようにするためです。

で、引数として forceを入れます。さっきのVector3 (0f,-9.8f,0f)ですね。

このforceはaccelerationに加算されます。初期ステップ目では -9.8m/s2ということです。

1ステップ更新すると、このaccelerationに対して時間dt=1/60s を掛け算した値であるvelocityが計算され、さらにそのvelocityに時間dtを掛け算した変位(1ステップの移動量)positionが計算されます。

これでpositionはどんどん下がっていくので、床と衝突します。

衝突は、オブジェクトの中心座標分だけ床から浮いた状態を床との接触状態と考えてif文で検知したら速度を反転させ跳ね返るようにします。

最後にaccelerrationはゼロに初期化して、次のステップで再定義されるための準備をします。

 

data_science:Chapter5 Scipy

こんにちはKeita_Nakamoriです。

Scipyのおさらいをしました。

科学技術用モジュールというだけあって、

補間 スプライン補間 interplate linalg
特異値分解 LU分解 コレスキー分解
数値積分 微分方程式 integrate
最適化 二分法 ブレント法 ニュートン法 optimize
高速フーリエ変換 信号処理 画像処理

などなど、盛りだくさんです。

線形代数関係は、さっぱりなところもありましたので、必要になったときに再び掘り下げて学習しなおそうと思います。

スクリプト

data_scientist_chapter_5_scipy

data_science:Chapter4 確率と統計の基礎

こんにちはKeita_Nakamoriです。

データサイエンティスト育成講座、連休のおかげで久々に手がつけられました。

主に確率分布、推定、検定の話でした。苦手な分野なので地道に理解しながら牛歩のごとく進めました。

スクリプトメモ

data_scientist_chapter_4

次回は再びNumpyやらPandasの使い方になるのでさらっと行けたら良いなと思います。

Jetoson Nano に VScodeをインストールする

こんにちはKeita_Nakamoriです(^o^)

小学生向けにPythonの学習用にとJetson Nanoを久々に引っ張り出して有効活用しようと思いつきました。

Linux用のAnaconda3をイントールしようとしましたが無理なようなのであきらめてVScodeをインストールしようと思います。

まじめにやるならVScode本体をビルドしてからインストールしますが、下手をすると1時間くらいかかるので今回はビルド済みのパッケージをダウンロードしてインストールしました。

curlを使用するので

$sudo apt-get install curl

してから

$curl -L https://github.com/toolboc/vscode/releases/download/1.32.3/code-oss_1.32.3-arm64.deb -o code-oss_1.32.3-arm64.deb

そして

$sudo dpkg -i code-oss_1.32.3-arm64.deb

VScodeを立ち上げてみます。

$code-oss

インストールしたてのときはメニューがないので表示するための設定をします

  1. ctrl+shift+P でコマンドパレットを起動
  2. open user settingsと入力する
  3. window title barと入力する
  4. 下の方にwindow.titleBarStyleという項目があるのでcustomに変更する。

Restartするよう警告がでるの、Restartボタンをクリックする。

これでメニューバーが追加されたはずです。

左端にあるExtensions でpythonをインストールします。

pylintも入れたいですが、現状ではpip3すら入っていない状態ですので入れます。

$sudo apt install python-pip python3-pip

$pip3 install pylint

これで VScodeでpython開発ができます。\(^o^)/