# クラス fk_Perspective

対称透視投影法を制御するクラス [詳細]

fk_Perspectiveに対する継承グラフ
[凡例]
fk_Perspectiveのコラボレーション図
[凡例]

すべてのメンバ一覧

## Public メソッド
| fk_Perspective (double fovy=2.0 *FK_PI/9.0, double near=1.0, double far=6000.0)
| コンストラクタ
| ~fk_Perspective ()
| デストラクタ
| fk_Perspective (const fk_Perspective &)
| コピーコンストラクタ
fk_Perspective & | operator= (const fk_Perspective &)
| 単純代入演算子
void | setFovy (double fovy)
| 視野角設定関数
void | setNear (double near)
| クリッピング近距離面距離設定関数
void | setFar (double far)
| クリッピング遠距離面距離設定関数
void | setAll (double fovy, double near, double far)
| 一括設定関数
double | getFovy (void) const
| 視野角参照関数
double | getNear (void) const
| クリッピング近距離面距離参照関数
double | getFar (void) const
| クリッピング遠距離面距離参照関数

## 説明

対称透視投影法を制御するクラス

このクラスは、対称透視投影法の設定を制御する機能を提供します。 本クラスで対称透視投影に対する様々な値を設定し、 fk_DisplayLink::setProjection() 関数を用いてシーンに設定することで、 シーン内の投影設定を行うことができます。

透視投影の特徴は、近くの物体は大きく、遠くの物体は小さく表示するという、 いわゆる遠近感を持つことです。 この投影法は、人間の目やカメラの持つ感覚と類似しているため、 アニメーションやビジュアルシミュレーションなどのような リアルさが必要な場面でよく利用されています。 しかし、透視投影においては 3 次元空間中において平行な面や線が、 表示された場合に平行にはならないという現象がおきるため、 設計などには向いていません。 そのような場合は、 fk_Ortho による平行投影を用いた方がよいでしょう。

透視投影を用いる場合、本クラスによる「対称透視投影」と、 fk_Frustum クラスによる「一般透視投影」の2種類の投影法が存在します。 対称透視投影は、カメラ目線の先が描画画面の中心となることを前提とした投影であり、 通常はこちらを用いた方が簡便です。 カメラ目線が画面の中心にないような投影を作成する場合は、 fk_Frustum による一般透視投影を用いる必要があります。

設定は、3種類の値によって行います。 1つは「視野角」で、 これは画面最上部に向いたベクトルと最下部に向いたベクトルの角度です。 あとの2つは「クリップ距離」であり、この2つの距離の間にある物体が表示されます。 通常は、近い方を十分小さな値、遠い方を大きな値とすることで、 本来見えるはずの物体が全て見えるようにしておきます。 以下がその概念図です。

透視投影法

参照:
  fk_Frustum, fk_Ortho, fk_DisplayLink

## コンストラクタとデストラクタ

fk_Perspective::fk_Perspective | ( | double | fovy = `2.0 *FK_PI/9.0`,
|  | double | near = `1.0`,
|  | double | far = `6000.0` |
| ) |  |  |

コンストラクタ

コンストラクタで、初期値を設定することが可能です。

引数:

  `[in]` | fovy | 視野角を設定します。単位は弧度法(ラジアン)です。
  `[in]` | near | クリッピング近距離面への距離
  `[in]` | far | クリッピング遠距離面への距離

fk_Perspective::~fk_Perspective | ( |  | ) |

デストラクタ

fk_Perspective::fk_Perspective | ( | const fk_Perspective & |  | ) |

コピーコンストラクタ

## 関数

fk_Perspective& fk_Perspective::operator= | ( | const fk_Perspective & |  | ) |

単純代入演算子

void fk_Perspective::setFovy | ( | double | fovy | ) |

視野角設定関数

視野角を設定します。

引数:

  `[in]` | fovy | 視野角。単位は弧度法(ラジアン)です。

void fk_Perspective::setNear | ( | double | near | ) |

クリッピング近距離面距離設定関数

クリッピング近距離面への距離を設定します。

引数:

  `[in]` | near | 面への距離

void fk_Perspective::setFar | ( | double | far | ) |

クリッピング遠距離面距離設定関数

クリッピング遠距離面への距離を設定します。

引数:

  `[in]` | far | 面への距離

void fk_Perspective::setAll | ( | double | fovy,
|  | double | near,
|  | double | far |
| ) |  |  |

一括設定関数

視野角、クリッピング面距離を一括して設定します。

引数:

  `[in]` | fovy | 視野角。単位は弧度法(ラジアン)です。
  `[in]` | near | クリッピング近距離面への距離
  `[in]` | far | クリッピング遠距離面への距離

double fk_Perspective::getFovy | ( | void |  | ) | const

視野角参照関数

視野角を参照します。

戻り値:
  視野角。単位は弧度法(ラジアン)です。

double fk_Perspective::getNear | ( | void |  | ) | const

クリッピング近距離面距離参照関数

クリッピング近距離面への距離を参照します。

戻り値:
  距離

double fk_Perspective::getFar | ( | void |  | ) | const

クリッピング遠距離面距離参照関数

クリッピング遠距離面への距離を参照します。

戻り値:
  距離