本日のお題は『ベクトルの大きさを取得』です。
このお題に関しては、実際の動きを見ていただいた方が分かりやすいと思いますので、早速説明に移りたいと思います。
1. 環境
今回はFreeCADのAPIを使って、反転処理をしてみたいと思います。
- FreeCAD 0.18
2. ベクトルの大きさを求める方法
ベクトルの大きさなんて言うと分かりにくいですね。この際『距離』と考えてもらった方が分かりやすいかもしれません。
方向を表すベクトルは『方向だけを表す単位ベクトル』と『そのベクトルの大きさ(距離)』が混ざったものと、個人的には考えています。
今回は上記の2つが混ざったベクトルから、大きさの成分だけ取り出そうというわけです。
3. プログラムを書いてみよう
残念ながら、FreeCADのAPIに大きさ(Magunitude)を算出するAPIが無いようなので、メソッドを自作していきます。とは言っても、1,2行で済みますが。
# -*- coding: utf-8 -*- import FreeCAD import math def Magnitude(vector): return math.sqrt((vector.x ** 2) + (vector.y ** 2) + (vector.z ** 2)) targetVector = FreeCAD.Vector(10,10,0) FreeCAD.Console.PrintMessage(str(Magnitude(targetVector)))
14.1421356237
結果の値を見てお気づきの方もいるかもしれませんが、√2の10倍ですね。
「ひとよ、ひとよに、ひとみごろ」ってやつです。
『1:1:√2』という言葉に聞き覚えのある方もいるかもしれません。
想像がつきやすいかと思い、この値を使いました。
ちなみに、Magnitudeメソッドの中では、下記のようなことをやっています。もしかしたら、見覚えのある方が結構いるのでは?
一応言っておきますと、(10, 10, 0)の単位ベクトルを算出し、それに上記の14.142...をscaleしてあげると(10, 10, 0)が算出されます。検算の意味も込めて。
4. まとめ
- ベクトルの大きさを求めるときは、現状自作のメソッドを作る必要がある
- 単位ベクトルに大きさを乗算してあげると、大きさを含んだベクトルになる
5. 最後に
大きさの概念は移動量の計算をする際などに必要になってきますので、感覚だけは掴んでおきましょう。
更なる情報をお探しの方は!
下記のリンクから、FreeCADプログラミングのトップページに飛びます。
よろしければご参照くださいませ。