本日は単位ベクトルについて、お勉強していきたいと思います。
あまりなじみの無い方は『単位+ベクトル?』と思われるかもしれませんが、そんなに大それて難しいものではありません。
1. 環境
- FreeCAD 0.18
2. 単位ベクトルとは?
大きさが1のベクトルであり、それ以外に特別なことはありません。
おそらくこれをどう使うかが、重要なところですかね。実例は下で紹介したいと思います。
3. 単位ベクトルのすごいところ
単位ベクトルには便利な性質があります。
それは「単位ベクトルに大きさを掛けると、移動量が算出される」ことです。
例えば『ある方向(単位ベクトル)に向けて、30mm移動した位置が欲しい』とき、単位ベクトルのx,y,z要素に30mmを掛けると、移動量が算出されます。
4. 単位化
あるベクトルを大きさ1のベクトルに変換することを『単位化』といいます。
単位化する理由はケースによって異なりますが、私個人としては、下記の計算をするときによくやります。
- 内積の平行・直交判定
- 大きさをかけて移動量を求める
- APIを使うとき、なんとなく大きさの成分がいらないと思ったとき
5. プログラムを書いてみよう
ありがたいことに、単位化するAPIはFreeCADに用意されており、normalize()というメソッドを利用します。
# -*- coding: utf-8 -*- import FreeCAD vec = FreeCAD.Vector(10,20,30) unitVec = vec.normalize() FreeCAD.Console.PrintMessage(str(unitVec))
Vector (0.2672612419124244, 0.5345224838248488, 0.8017837257372731)
「なんだ1じゃねぇじゃねぇか。」と思いますよね。
実はx,y,zをそれぞれ2乗して足し、√でくくるとほぼ1になります。不思議なモンです。
とりあえず、この法則を知らなくても先に進めますので、今は無視して大丈夫です。
6. まとめ
- 単位ベクトルは大きさが1のベクトル
- 単位ベクトルが何かを考えるより、どう使うかを先に覚えたほうが良い
- ある方向への移動量を計算するときに使える
7. 最後に
単位ベクトルに関してだけ説明するのは、意外と難しいものですね。
正直、あまり分からなかった方は「なんとなくこんなのあったなぁ」ぐらいの感覚で良いと思います。後で実際の使用例を記事にするので、そのときに少し思い出してもらえれば、今は忘れてもOKです。
更なる情報をお探しの方は!
下記のリンクから、FreeCADプログラミングのトップページに飛びます。
よろしければご参照くださいませ。