FineKernelToolKit 3.1.0

- 総合概要
- 名前空間
- クラス
- ファイル

- クラス一覧
- クラス階層
- クラスメンバ

公開メンバ関数 | プロパティ | 全メンバ一覧
FK_CLI::fk_Plane クラス

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

FK_CLI::fk_Plane 連携図
[凡例]

## 公開メンバ関数
| 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_Vector^ | GetPos (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_Vector^ | BasePos`[get]`
| 基点ベクトルプロパティ [詳解]
fk_Vector^ | UVec`[get]`
| Uベクトルプロパティ [詳解]
fk_Vector^ | VVec`[get]`
| Vベクトルプロパティ [詳解]
fk_Vector^ | Normal`[get]`
| 法線ベクトルプロパティ [詳解]
double | Dist`[get]`
| 原点距離参照メソッド [詳解]

## 詳解

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

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

- 平面と原点、あるいは平面と任意点の距離算出
- 平面と直線の交点算出
- 平面同士、あるいは平面とベクトルとの平行、垂直判定

fk_Plane において、平面 P の表現は平面上の点 と、 平面上の平行でない2つの単位ベクトル によって、

という式でなされます。 は実数パラメータです。 各メソッドの解説では、 を「基点ベクトル」、 を「Uベクトル」「Vベクトル」とします。

## 構築子と解体子

FK_CLI::fk_Plane::fk_Plane | ( |  | ) |

コンストラクタ

FK_CLI::fk_Plane::fk_Plane | ( | fk_Plane^ | P | ) |

コピーコンストラクタ

FK_CLI::fk_Plane::~fk_Plane | ( |  | ) |

デストラクタ

FK_CLI::fk_Plane::!fk_Plane | ( |  | ) |

ファイナライザ

## 関数詳解

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

文字列出力メソッド

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

戻り値
  平面情報の文字列

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

平面設定メソッド1

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

引数

  [in] | pos | 基点ベクトル
  [in] | norm | 法線ベクトル

戻り値
  設定に成功すれば true を、失敗すれば false を返します。

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 を返します。

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] | U | Uベクトル。単位ベクトルである必要はありません。
  [in] | V | Vベクトル。単位ベクトルである必要はありません。

戻り値
  設定に成功すれば true を、失敗すれば false を返します。

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

任意点距離参照メソッド

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

引数

  [in] | pos | 任意の位置ベクトル

戻り値
  距離

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

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

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

引数

  [in] | u | uパラメータ
  [in] | v | vパラメータ

戻り値
  平面上点の位置ベクトル

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

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

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

引数

  [in] | V | 任意ベクトル

戻り値
  平行であれば true を、平行でなければ false を返します。

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

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

引数

  [in] | P | 任意平面

戻り値
  平行であれば true を、平行でなければ false を返します。

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

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

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

引数

  [in] | V | 任意ベクトル

戻り値
  垂直であれば true を、垂直でなければ false を返します。

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

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

引数

  [in] | P | 任意平面

戻り値
  垂直であれば true を、垂直でなければ false を返します。

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 を返します。

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

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

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

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

引数

  [in] | A | 直線上の1点
  [in] | B | 直線上の1点
  [out] | t | 交点の直線上でのパラメータが代入されます。

戻り値
  成功すれば true を、失敗すれば false を返します。

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 を返します。

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

交点情報参照メソッド

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

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

引数

  [in] | A | 直線上の1点
  [in] | B | 直線上の1点
  [out] | pos | 交点位置ベクトルが代入されます。
  [out] | t | 交点の直線上でのパラメータが代入されます。
  [out] | u | 交点の平面上でのuパラメータが代入されます。
  [out] | v | 交点の平面上でのvパラメータが代入されます。

戻り値
  成功すれば true を、失敗すれば false を返します。

## プロパティ詳解

fk_Vector^ FK_CLI::fk_Plane::BasePos
| get

基点ベクトルプロパティ

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

fk_Vector^ FK_CLI::fk_Plane::UVec
| get

Uベクトルプロパティ

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

fk_Vector^ FK_CLI::fk_Plane::VVec
| get

Vベクトルプロパティ

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

fk_Vector^ FK_CLI::fk_Plane::Normal
| get

法線ベクトルプロパティ

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

double FK_CLI::fk_Plane::Dist
| get

原点距離参照メソッド

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