興味があろうがなかろうが。

なるべく役に立つ、とがった内容を記していきたいと思います。

【FreeCADプログラミング】単位ベクトルの取得

本日は単位ベクトルについて、お勉強していきたいと思います。

あまりなじみの無い方は『単位+ベクトル?』と思われるかもしれませんが、そんなに大それて難しいものではありません。

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プログラミングのトップページに飛びます。

よろしければご参照くださいませ。

www.interested-or-not.com