Python言語とNumPyを用いて、回転行列を生成し、座標変換の計算をする方法をソースコード付きで解説します。
回転行列
回転行列とは、姿勢変換などに用いられる重要な行列です。
この行列を使うと、2次元平面上や3次元空間上の点(x、y)をθ度回転させた後の座標を簡単に求めることができます。
【参考記事】x-y-z軸周りの回転行列 (式・導出・証明)
今回は、上記事のx-y-z軸周りの回転行列をPythonとNumPyで計算してみました。
ソースコード
サンプルプログラムのソースコードです。
# -*- coding: utf-8 -*-
import numpy as np
def rotate_x(deg):
# degreeをradianに変換
r = np.radians(deg)
C = np.cos(r)
S = np.sin(r)
# x軸周りの回転行列
R_x = np.matrix((
(1, 0, 0),
(0, C, -S),
(0, S, C)
))
return R_x
def main():
# 元の行列
a = np.array((1,1,0))
# 回転行列の生成
Rx = rotate_x(90)
# 回転後のベクトルを計算
b = np.dot(Rx,a)
# 整数型に変換
b = np.array(b,dtype=np.uint8)
print("a=" + str(a))
print("R=" + str(Rx))
print("b=" + str(b[0]))
if __name__ == '__main__':
main()
実行結果
サンプルプログラムの実行結果は下記の通りです。
点aがx-y-z空間上でx軸に対して90度回転した後の点bを回転行列Rで求めています。
b = R・a
a=[1 1 0] R=[[ 1.00000000e+00 0.00000000e+00 0.00000000e+00] [ 0.00000000e+00 6.12323400e-17 -1.00000000e+00] [ 0.00000000e+00 1.00000000e+00 6.12323400e-17]] b=[1 0 1]
| – | 関連ページ |
|---|---|
| 1 | ■Pythonでロボットシミュレーション |
| 2 | ■ロボット工学入門 基礎編 |
| 3 | ■Python入門 サンプル集 |
| 4 | ■NumPy入門 サンプル集 |

コメント