FineKernelToolKit 4.2.13
読み取り中…
検索中…
一致する文字列を見つけられません
公開メンバ関数 | プロパティ | 全メンバ一覧
FK_CLI::fk_Plane クラス

幾何平面を管理するクラス [詳解]

#include <CLI/FK_CLI/include/Plane_CLI.h>

公開メンバ関数

 fk_Plane ()
 コンストラクタ
 
 fk_Plane (fk_Plane^ P)
 コピーコンストラクタ
 
 ~fk_Plane ()
 デストラクタ
 
 !fk_Plane ()
 ファイナライザ
 
String ^ ToString () override
 文字列出力メソッド
 
bool SetPosNormal (fk_Vector^ pos, fk_Vector^ norm)
 平面設定メソッド1
 
bool Set3Pos (fk_Vector^ pos1, fk_Vector^ pos2, fk_Vector^ pos3)
 平面設定メソッド2
 
bool SetPosUVVec (fk_Vector ^ pos, fk_Vector ^ U, fk_Vector ^ V)
 平面設定メソッド3
 
double GetDist (fk_Vector^ pos)
 任意点距離参照メソッド
 
fk_VectorGetPos (double u, double v)
 u,v パラメータによる平面上点参照メソッド
 
bool IsParallel (fk_Vector^ V)
 ベクトル平行判定メソッド
 
bool IsParallel (fk_Plane^ P)
 
bool IsVertical (fk_Vector^ V)
 ベクトル垂直判定メソッド
 
bool IsVertical (fk_Plane^ P)
 
bool CalcCrossPos (fk_Vector^ A, fk_Vector^ B, fk_Vector^ pos)
 交点位置ベクトル参照メソッド
 
bool CalcCrossLineParam (fk_Vector^ A, fk_Vector^ B, double % t)
 交点直線パラメータ参照メソッド
 
bool CalcCrossPlaneParam (fk_Vector^ A, fk_Vector^ B, double % u, double % v)
 交点平面パラメータ参照メソッド
 
bool CalcCrossAll (fk_Vector^ A, fk_Vector^ B, fk_Vector^ pos, double % t, double % u, double % v)
 交点情報参照メソッド
 

プロパティ

fk_VectorBasePos [get]
 基点ベクトルプロパティ
 
fk_VectorUVec [get]
 Uベクトルプロパティ
 
fk_VectorVVec [get]
 Vベクトルプロパティ
 
fk_VectorNormal [get]
 法線ベクトルプロパティ
 
double Dist [get]
 原点距離参照メソッド
 

詳解

幾何平面を管理するクラス

このクラスは、空間中の平面に関する幾何的な算出を行う機能を提供します。 このクラスは fk_Polygon のような形状を生成するためのものではなく、 純粋に幾何計算を行うためのものです。具体的には、以下のような処理が可能です。

fk_Plane において、平面 P の表現は平面上の点 \( \mathbf{B} \) と、 平面上の平行でない2つの単位ベクトル \( \mathbf{U}, \mathbf{V} \) によって、

\[ \mathbf{P}(u, v) = \mathbf{B} + u\mathbf{U} + v\mathbf{V} \]

という式でなされます。 \(u, v\) は実数パラメータです。 各メソッドの解説では、 \(\mathbf{B}\) を「基点ベクトル」、 \(\mathbf{U}, \mathbf{V}\)を「Uベクトル」「Vベクトル」とします。

なお、平面が関与しない幾何計算は fk_Math クラスに集約しているので、 そちらも参照して下さい。

参照
fk_Math

構築子と解体子

◆ fk_Plane() [1/2]

FK_CLI::fk_Plane::fk_Plane ( )

コンストラクタ

◆ fk_Plane() [2/2]

FK_CLI::fk_Plane::fk_Plane ( fk_Plane P)

コピーコンストラクタ

◆ ~fk_Plane()

FK_CLI::fk_Plane::~fk_Plane ( )

デストラクタ

◆ !fk_Plane()

FK_CLI::fk_Plane::!fk_Plane ( )

ファイナライザ

関数詳解

◆ ToString()

String ^ FK_CLI::fk_Plane::ToString ( )
override

文字列出力メソッド

現在の平面情報を文字列として出力します。

戻り値
平面情報の文字列

◆ SetPosNormal()

bool FK_CLI::fk_Plane::SetPosNormal ( fk_Vector pos,
fk_Vector norm 
)

平面設定メソッド1

平面上の1点と、平面の法線ベクトルを指定することにより、平面を設定します。 基点ベクトルは pos となり、UベクトルとVベクトルは自動的に算出されます。 法線ベクトルとして零ベクトルが入力された場合はエラーとなります。

引数
[in]pos基点ベクトル
[in]norm法線ベクトル
戻り値
設定に成功すれば true を、失敗すれば false を返します。

◆ Set3Pos()

bool FK_CLI::fk_Plane::Set3Pos ( fk_Vector pos1,
fk_Vector pos2,
fk_Vector pos3 
)

平面設定メソッド2

平面上の3点を指定することにより、平面を設定します。 基点ベクトルは pos1 となり、 Uベクトルは (pos2 - pos1)、 Vベクトルは (pos3 - pos1) をそれぞれ正規化したものとなります。 3点が同一直線上にある場合はエラーとなります。

引数
[in]pos1基点ベクトル
[in]pos2平面上の点の位置ベクトル
[in]pos3平面上の点の位置ベクトル
戻り値
設定に成功すれば true を、失敗すれば false を返します。

◆ SetPosUVVec()

bool FK_CLI::fk_Plane::SetPosUVVec ( fk_Vector pos,
fk_Vector U,
fk_Vector V 
)

平面設定メソッド3

平面上の1点と、平面の法線ベクトルに垂直な平行でない 2つのベクトルを指定することにより、平面を設定します。 引数の U, V がそれぞれ Uベクトル、Vベクトルとして設定されます。 U, V が平行であるか、少なくとも一方が零ベクトルであった場合エラーとなります。

引数
[in]pos基点ベクトル
[in]UUベクトル。単位ベクトルである必要はありません。
[in]VVベクトル。単位ベクトルである必要はありません。
戻り値
設定に成功すれば true を、失敗すれば false を返します。

◆ GetDist()

double FK_CLI::fk_Plane::GetDist ( fk_Vector pos)

任意点距離参照メソッド

平面と任意の点との距離を取得します。

引数
[in]pos任意の位置ベクトル
戻り値
距離

◆ GetPos()

fk_Vector ^ FK_CLI::fk_Plane::GetPos ( double  u,
double  v 
)

u,v パラメータによる平面上点参照メソッド

概要で述べた数式に従って、平面上点の位置ベクトルを算出します。

引数
[in]uuパラメータ
[in]vvパラメータ
戻り値
平面上点の位置ベクトル

◆ IsParallel() [1/2]

bool FK_CLI::fk_Plane::IsParallel ( fk_Vector V)

ベクトル平行判定メソッド

任意のベクトルが平行であるかどうかを判定します。 V が零ベクトルであった場合は常に false を返します。

引数
[in]V任意ベクトル
戻り値
平行であれば true を、平行でなければ false を返します。

◆ IsParallel() [2/2]

bool FK_CLI::fk_Plane::IsParallel ( fk_Plane P)

別の任意の平面と平行であるかどうかを判定します。

引数
[in]P任意平面
戻り値
平行であれば true を、平行でなければ false を返します。

◆ IsVertical() [1/2]

bool FK_CLI::fk_Plane::IsVertical ( fk_Vector V)

ベクトル垂直判定メソッド

任意のベクトルが垂直であるかどうかを判定します。 V が零ベクトルであった場合は常に false を返します。

引数
[in]V任意ベクトル
戻り値
垂直であれば true を、垂直でなければ false を返します。

◆ IsVertical() [2/2]

bool FK_CLI::fk_Plane::IsVertical ( fk_Plane P)

別の任意の平面と垂直であるかどうかを判定します。

引数
[in]P任意平面
戻り値
垂直であれば true を、垂直でなければ false を返します。

◆ CalcCrossPos()

bool FK_CLI::fk_Plane::CalcCrossPos ( fk_Vector A,
fk_Vector B,
fk_Vector pos 
)

交点位置ベクトル参照メソッド

2点A, B を通る直線と平面との交点の位置ベクトルを取得します。 A,Bが同じ位置であった場合は、直線と平面が平行である場合、 エラーとなります。

引数
[in]A直線上の1点
[in]B直線上の1点
[out]pos交点位置ベクトルが代入されます。
戻り値
成功すれば true を、失敗すれば false を返します。

◆ CalcCrossLineParam()

bool FK_CLI::fk_Plane::CalcCrossLineParam ( fk_Vector A,
fk_Vector B,
double %  t 
)

交点直線パラメータ参照メソッド

2点A, B を通る直線と平面との交点の、直線上でのパラメータを取得します。 直線式 \(\mathbf{L}(t)\) は、以下のようなものであると想定します。

\[ \mathbf{L}(t) = (1-t)\mathbf{A} + t\mathbf{B} \]

A,Bが同じ位置であった場合は、直線と平面が平行である場合、 エラーとなります。

引数
[in]A直線上の1点
[in]B直線上の1点
[out]t交点の直線上でのパラメータが代入されます。
戻り値
成功すれば true を、失敗すれば false を返します。

◆ CalcCrossPlaneParam()

bool FK_CLI::fk_Plane::CalcCrossPlaneParam ( fk_Vector A,
fk_Vector B,
double %  u,
double %  v 
)

交点平面パラメータ参照メソッド

2点A, B を通る直線と平面との交点の、平面上でのパラメータを取得します。 平面の式は概要のものと想定します。 A,Bが同じ位置であった場合は、直線と平面が平行である場合、 エラーとなります。

引数
[in]A直線上の1点
[in]B直線上の1点
[out]u交点の平面上でのuパラメータが代入されます。
[out]v交点の平面上でのvパラメータが代入されます。
戻り値
成功すれば true を、失敗すれば false を返します。

◆ CalcCrossAll()

bool FK_CLI::fk_Plane::CalcCrossAll ( fk_Vector A,
fk_Vector B,
fk_Vector pos,
double %  t,
double %  u,
double %  v 
)

交点情報参照メソッド

2点A, B を通る直線と平面との交点の、直線上でのパラメータを取得します。 直線式 \(\mathbf{L}(t)\)は、以下のようなものであると想定します。

\[ \mathbf{L}(t) = (1-t)\mathbf{A} + t\mathbf{B} \]

平面の式は概要のものと想定します。 A,Bが同じ位置であった場合は、直線と平面が平行である場合、 エラーとなります。

引数
[in]A直線上の1点
[in]B直線上の1点
[out]pos交点位置ベクトルが代入されます。
[out]t交点の直線上でのパラメータが代入されます。
[out]u交点の平面上でのuパラメータが代入されます。
[out]v交点の平面上でのvパラメータが代入されます。
戻り値
成功すれば true を、失敗すれば false を返します。

プロパティ詳解

◆ BasePos

fk_Vector^ FK_CLI::fk_Plane::BasePos
get

基点ベクトルプロパティ

基点ベクトルを取得します。

◆ UVec

fk_Vector^ FK_CLI::fk_Plane::UVec
get

Uベクトルプロパティ

Uベクトルを取得します。

◆ VVec

fk_Vector^ FK_CLI::fk_Plane::VVec
get

Vベクトルプロパティ

Vベクトルを取得します。

◆ Normal

fk_Vector^ FK_CLI::fk_Plane::Normal
get

法線ベクトルプロパティ

法線ベクトルを取得します。

◆ Dist

double FK_CLI::fk_Plane::Dist
get

原点距離参照メソッド

平面と原点との距離を取得します。