- メインページ
- モジュール
- ネームスペース
- データ構造
- ファイル

- データ構造
- データ構造索引
- クラス階層
- データフィールド

Public 型 | Public メソッド | Protected 変数
クラス テンプレート mist::bspline< T, K, Allocator >
Bスプライン曲線

Bスプライン曲線を扱うためのクラス [詳細]

`#include <bspline.h>`

std::vector< T >を継承しています。

## Public 型
enum | BSplineMode { ROUND, THROUGH }
| ノットベクトルを手動で設定しない場合のデフォルトのモード [詳細]

## Public メソッド
value_type | operator() (double t)
| 指定された位置（区間０〜１）に対応する，Bスプライン補間結果を返す
void | knot (const knot_list &kknot)
| 任意のノットベクトルを設定する
void | knot (BSplineMode mode)
| デフォルトのモードでノットベクトルを設定する
const bspline & | operator= (const bspline &b)
| 代入演算子
| bspline (const bspline &b)
| コピーコンストラクタ
| bspline ()
| デフォルトのコンストラクタ

## Protected 変数
knot_list | knot_
| ノットベクトル
BSplineMode | mode_
| デフォルトのノットベクトル設定

## Additional Inherited Members
変数 inherited from std::vector< T >
T | elements
| STL member.

## 説明

### template<class T, int K, class Allocator = std::allocator< T >>
class mist::bspline< T, K, Allocator >

Bスプライン曲線を扱うためのクラス

K次のBスプライン曲線を描画可能．可変個数の制御点に対応し，任意のノットベクトルに対応するBスプライン曲線を描画

注意
  入力されるデータ型が，加減算と単一のスカラー値を全てに代入する操作と浮動小数との掛け算をサポートする必要がある．
  ただし，vector2，vector3 は正しく動作するようになっている．
  array 等のMISTコンテナを利用する際には，オペレータを有効にする必要がある．

引数

  T | … 各制御点・補間点を表すデータ構造を指定（double や vector3< double > など）
  K | … Bスプライン曲線の次数

Bスプライン曲線の作成例
// 3次で変数の型が double のBスプラインを作成する
mist::bspline< double, 3 > b;
// 制御点を追加
b.push_back( 2.0 );
b.push_back( 3.0 );
...
// ノットベクトルを以下の方法のいずれかを用いて設定
// ・閉曲線の設定
b.knot( mist::bspline< double >::ROUND );
// ・最初と最後の制御点を通る場合の設定
b.knot( mist::bspline< double >::THROUGH );
// ・任意のノットベクトルを設定
b.knot( STLのベクトルタイプのノットのリスト );
// 補間点を計算（区間は０〜１）
double p1 = b( 0.0 );
double p2 = b( 0.4 );
double p3 = b( 0.7 );
...

## 列挙型

template<class T , int K, class Allocator = std::allocator< T >>

enum mist::bspline::BSplineMode

ノットベクトルを手動で設定しない場合のデフォルトのモード

列挙型の値:

  ROUND | 閉曲線の設定
  THROUGH | 最初と最後の制御点を通る場合の設定

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

template<class T , int K, class Allocator = std::allocator< T >>

mist::bspline< T, K, Allocator >::bspline | ( |  | ) |
| inline

デフォルトのコンストラクタ

ノットベクトルのデフォルト値を「最初と最後を通る曲線」に設定する

## 関数

template<class T , int K, class Allocator = std::allocator< T >>

void mist::bspline< T, K, Allocator >::knot | ( | const knot_list & | kknot | ) |
| inline

任意のノットベクトルを設定する

注意
  次数 K で制御点数 N とした時に，ノットベクトルの数は N + K + 1 必要である

引数

  [in] | kknot | … ノットベクトル

template<class T , int K, class Allocator = std::allocator< T >>

void mist::bspline< T, K, Allocator >::knot | ( | BSplineMode | mode | ) |
| inline

デフォルトのモードでノットベクトルを設定する

本クラス内で定義されている列挙型 BSplineMode のうちの一つを利用する

引数

  [in] | mode | … 曲線のタイプ

template<class T , int K, class Allocator = std::allocator< T >>

value_type mist::bspline< T, K, Allocator >::operator() | ( | double | t | ) |
| inline

指定された位置（区間０〜１）に対応する，Bスプライン補間結果を返す

注意
  次数＋１の制御点数が入力されている必要あり．足りない場合は，デフォルトのノットベクトルで最初期化される．

引数

  [in] | t | … 全体の曲線を区間０〜１とした時に，補間される点の位置

戻り値
  指定された点の位置に対応するBスプライン曲線の補間結果

このクラスの説明は次のファイルから生成されました:

- bspline.h