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

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

【FreeCADプログラミング】ベクトルの大きさを取得

本日のお題は『ベクトルの大きさを取得』です。

このお題に関しては、実際の動きを見ていただいた方が分かりやすいと思いますので、早速説明に移りたいと思います。

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』という言葉に聞き覚えのある方もいるかもしれません。

想像がつきやすいかと思い、この値を使いました。

f:id:appli-get:20191010090653j:plain

上のプログラムの結果イメージ(分かりやすくするためZ要素は殺しました)

ちなみに、Magnitudeメソッドの中では、下記のようなことをやっています。もしかしたら、見覚えのある方が結構いるのでは?

f:id:appli-get:20191010090553j:plain

ベクトルの大きさ算出時にやっていること

一応言っておきますと、(10, 10, 0)の単位ベクトルを算出し、それに上記の14.142...をscaleしてあげると(10, 10, 0)が算出されます。検算の意味も込めて。

4. まとめ

  • ベクトルの大きさを求めるときは、現状自作のメソッドを作る必要がある
  • 単位ベクトルに大きさを乗算してあげると、大きさを含んだベクトルになる

5. 最後に

大きさの概念は移動量の計算をする際などに必要になってきますので、感覚だけは掴んでおきましょう。

更なる情報をお探しの方は!

下記のリンクから、FreeCADプログラミングのトップページに飛びます。

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

www.interested-or-not.com