コンポーネントの構成

01_component.png

このコンポーネントは,制御点を格子状(DataTree)に並べた入力 P から,B-スプライン曲面上の点を指定した分割数で格子状に計算し,出力 S として返します。S を FromGridPts や FromGridPts2 に繋ぐと,曲面上に梁・シェル要素のモデルを自動生成できます。形状検討・形状最適化の起点として使います。

入力データは以下の通りです。赤字は入力必須データです。

出力データは以下の通りです。

計算方法

制御点を $P_{i,j}$,次数を $D$ とすると,各方向の節点ベクトルはクランプ型の一様節点ベクトルです(u方向の例)。

$$ k_u=(\underbrace{0,\dots,0}{D},\,0,1,\dots,N-D,\,\underbrace{N-D,\dots,N-D}{D}) $$

$u$ は $[0,N-D]$ を U 個に,$v$ は $[0,M-D]$ を V 個に等分して評価します。基底関数はコックス・ド・ブールの漸化式で計算します。

$$ N_{i,0}(u)=\begin{cases}1 & (k_u[i]\le u<k_u[i+1])\\ 0 & (\text{otherwise})\end{cases} $$

$$ N_{i,d}(u)=\dfrac{u-k_u[i]}{k_u[i+d]-k_u[i]}N_{i,d-1}(u)+\dfrac{k_u[i+d+1]-u}{k_u[i+d+1]-k_u[i+1]}N_{i+1,d-1}(u) $$

$$ S(u,v)=\sum_{i=0}^{N-1}\sum_{j=0}^{M-1}P_{i,j}\,N_{i,D}(u)\,N_{j,D}(v) $$

<aside> 💡 名称は「Rational B-spline」ですが,実装では制御点の重み(ウェイト)を使っておらず,重み無しの通常のB-スプライン曲面を計算しています。

</aside>

使い方

  1. 制御点を長方形の格子状のDataTreeとして用意し,P に繋ぎます。