本日は投影位置の計算について触れてみたいと思います。
CAD上での計算を行う際、座標系に平行・直交した位置の計算は単なる足し算・引き算でできますが、ひとたび傾くと、簡単には計算できなくなります。
そこで役に立つのが『投影距離の計算』です。
1. 環境
- FreeCAD 0.18
2. 投影距離とは?
投影距離は『ある方向成分の距離』を表しています。
(厳密な言い回しはちょっと違うかもしれません)
例えば下図のように、XY軸に対して傾いた線(黒い線)があったとします。
この時、X方向の成分だけを抽出したとしましょう。これが投影距離です。
もちろんY方向の成分だけを抽出しても投影距離です。
要は自分が指定した方向の距離だけを求めたいときに使います。
3. プログラムを書いてみよう
ありがたいことに投影距離計算用のAPIはFreeCADに用意されています。
(というよりも、自前でメソッドを作ることになったらどういう処理にするか、まだ頭に浮かんでいません)
# -*- coding: utf-8 -*- import FreeCAD v1 = FreeCAD.Vector(8,9,0) v2 = FreeCAD.Vector(5,5,0) v3 = FreeCAD.Vector(0,1,0) distance = v1.distanceToPlane(v2,v3) FreeCAD.Console.PrintMessage(str(distance))
4.0
ちなみにこのdistanceToPlaneというメソッド、本家『freecadweb.org』様の英語リファレンスがなかなか理解しづらく、下記のような文言が書いてありました。
distanceToPlane(Vector1,Vector2)Description: the distance between the vector and a plane defined by a point and a normal.
Returns: float
Google先生の翻訳機能をフル活用したところ、和訳はこんな感じになりました。
「ベクトルと、点と法線によって定義される平面との間の距離。」
なんとなく分かるような、分からないような。
一応色々試してみた結果では、第1・第2引数は下記のような入力だと想定しています。
- 第1引数: 投影距離を測るための2つ目の位置
(Vectorと書いてありますが、3次元の座標値を入れる感覚で良いと思います) - 第2引数: 投影距離を測る方向
なお、図に表すと下図赤枠の距離を取得しています。
4. distanceToPlaneは割と強力
distanceToPlaneは、要素が座標系のX,Y,Z軸に正対していない状況での距離計算に威力を発揮します。
例えば下図のように、2点と計りたい方向は分かる状況においては、本APIがあれば難なく計算できます。
5. まとめ
- 投影距離を測るときはdistanceToPlaneを使う
- distanceToPlaneは座標軸に正対していない状況での投影計算に威力を発揮する
6. 最後に
今回はAPIリファレンスの読解が難しかったですが、良い勉強になりました。
皆さんも慣れてきたら少しずつでも、リファレンスを読むようにしてみてください。
※注意※
実は管理人は数学が相当苦手なため、ロジック的に間違っている箇所があるかもしれません。もし何かお気づきの点がありましたら、コメントを頂けると助かります。
更なる情報をお探しの方は!
下記のリンクから、FreeCADプログラミングのトップページに飛びます。
よろしければご参照くださいませ。