jp.go.ipa.jgcl
クラス JgclBsplineKnot

java.lang.Object
  |
  +--jp.go.ipa.jgcl.JgclBsplineKnot
すべての実装インタフェース:
java.io.Serializable

public class JgclBsplineKnot
extends java.lang.Object
implements java.io.Serializable

Bスプラインのノット列を表すクラス。

このクラスのインスタンスは、以下の属性値によってBスプラインのノット列を表す。

実際のノット列の長さは、 periodic が false であれば (degree + nControlPoints + 1)、 periodic が true であれば (2 * degree + nControlPoints + 1) になる。

[属性間の拘束条件]

degree は 1 以上でなければならない。

knotSpec が JgclKnotType.UNIFORM_KNOTS の場合には

knotSpec が JgclKnotType.UNSPECIFIED の場合には

knotSpec は JgclKnotType.QUASI_UNIFORM_KNOTS あるいは JgclKnotType.PICEWISE_BEZIER_KNOTS であってはならない。

バージョン:
$Revision: 1.39 $, $Date: 2000/08/11 06:18:43 $
作成者:
Information-technology Promotion Agency, Japan
関連項目:
直列化された形式

コンストラクタの概要
JgclBsplineKnot(int degree, int knotSpec, boolean periodic, int[] knotMultiplicities, double[] knots, int nControlPoints)
          各フィールドに設定する値を与えてオブジェクトを構築する。
 
メソッドの概要
 JgclBsplineKnot beautify()
          ノット情報を整形する。
 int degree()
          このノット列の次数を返す。
 boolean isNonPeriodic()
          このノット列が開いた形式であるか否かを返す。
 boolean isPeriodic()
          このノット列が閉じた形式であるか否かを返す。
 double knotAt(int i)
          このノット列が持つノット値の配列の i 番目の値を返す。
 int[] knotMultiplicities()
          このノット列のノット多重度の配列を返す。
 int knotMultiplicityAt(double knot)
          このノット列の、指定のノット値に対応するノット多重度を返す。
 int knotMultiplicityAt(int i)
          このノット列が持つノット多重度の配列の i 番目の値を返す。
 double[] knots()
          このノット列のノット値の配列を返す。
 int knotSpec()
          このノット列のノットの種別を返す。
 double knotValueAt(int n)
          このノット列の n 番目のノット値を返す。
 int nControlPoints()
          このノット列の制御点の数を返す。
 int nKnots()
          このノット列のノット値の配列の長さを返す。
 int nKnotValues()
          このノット列のノットの数を返す。
 int nSegments()
          このノット列が示すBスプラインのセグメントの数を返す。
 void output(java.io.OutputStream out)
          出力ストリームに形状情報を出力する。
protected  void output(java.io.PrintWriter writer, int indent, int index)
          出力ストリームに形状情報を出力する。
 JgclBsplineKnot reverse()
          このノット列を反転したノット列を返す。
 int segmentIndex(double param)
          このノット列の、与えられたパラメータ値に対応するセグメントのインデックスを返す。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

JgclBsplineKnot

public JgclBsplineKnot(int degree,
                       int knotSpec,
                       boolean periodic,
                       int[] knotMultiplicities,
                       double[] knots,
                       int nControlPoints)
各フィールドに設定する値を与えてオブジェクトを構築する。

引数の値が [属性間の拘束条件] を満たさない場合には、 JgclInvalidArgumentValue の例外を発生する。

パラメータ:
degree - 次数
knotSpec - ノットの種別 (JgclKnotType)
periodic - 閉じた形式か否かを表すフラグ
knotMultiplicities - ノット多重度の配列
knots - ノット値の配列
nControlPoints - 制御点の数
関連項目:
JgclKnotType, JgclInvalidArgumentValue
メソッドの詳細

degree

public int degree()
このノット列の次数を返す。
戻り値:
次数

nControlPoints

public int nControlPoints()
このノット列の制御点の数を返す。
戻り値:
制御点の数

knotSpec

public int knotSpec()
このノット列のノットの種別を返す。
戻り値:
ノットの種別
関連項目:
JgclKnotType

nKnots

public int nKnots()
このノット列のノット値の配列の長さを返す。

ノットの種別が JgclKnotType.UNSPECIFIED でない場合には JgclFatal の例外を発生する。

戻り値:
ノット値の配列の長さ
関連項目:
JgclFatal

knotMultiplicities

public int[] knotMultiplicities()
このノット列のノット多重度の配列を返す。

ノットの種別が JgclKnotType.UNSPECIFIED でない場合には JgclFatal の例外を発生する。

戻り値:
ノット多重度の配列
関連項目:
JgclFatal

knots

public double[] knots()
このノット列のノット値の配列を返す。

ノットの種別が JgclKnotType.UNSPECIFIED でない場合には JgclFatal の例外を発生する。

戻り値:
ノット値の配列
関連項目:
JgclFatal

knotMultiplicityAt

public int knotMultiplicityAt(int i)
このノット列が持つノット多重度の配列の i 番目の値を返す。

ノットの種別が JgclKnotType.UNSPECIFIED でない場合には JgclFatal の例外を発生する。

戻り値:
i 番目のノット多重度
関連項目:
JgclFatal

knotMultiplicityAt

public int knotMultiplicityAt(double knot)
このノット列の、指定のノット値に対応するノット多重度を返す。

与えられた値がノット値でない場合には 0 を返す。

なお、このメソッドに正しい値を返させるには ノット列が整形されている必要がある。

パラメータ:
knot - 多重度を調べるノット値
戻り値:
指定のノット値のノット多重度
関連項目:
beautify()

knotAt

public double knotAt(int i)
このノット列が持つノット値の配列の i 番目の値を返す。

ノットの種別が JgclKnotType.UNSPECIFIED でない場合には JgclFatal の例外を発生する。

戻り値:
i 番目のノット値
関連項目:
JgclFatal

isPeriodic

public boolean isPeriodic()
このノット列が閉じた形式であるか否かを返す。
戻り値:
閉じた形式であれば true、そうでなければ false

isNonPeriodic

public boolean isNonPeriodic()
このノット列が開いた形式であるか否かを返す。
戻り値:
開いた形式であれば true、そうでなければ false

nSegments

public int nSegments()
このノット列が示すBスプラインのセグメントの数を返す。
戻り値:
セグメントの数

nKnotValues

public int nKnotValues()
このノット列のノットの数を返す。

ここで言う「ノットの数」とは knots フィールドに設定されたノット値の配列の長さではなく、 Bスプラインのノット列本来のノットの数である。

戻り値:
ノットの数

knotValueAt

public double knotValueAt(int n)
このノット列の n 番目のノット値を返す。

ここで言う「n 番目」とは knots フィールドに設定されたノット値の配列内のインデックスではなく、 Bスプラインのノット列本来の意味でのインデックスである。

パラメータ:
n - インデックス
戻り値:
n 番目のノット値

segmentIndex

public int segmentIndex(double param)
このノット列の、与えられたパラメータ値に対応するセグメントのインデックスを返す。

param は JgclParameterDomain.wrap(double) あるいは JgclParameterDomain.force(double) を用いて正規化されている必要がある。

パラメータ:
param - パラメータ値
戻り値:
対応するセグメントのインデックス

beautify

public JgclBsplineKnot beautify()
ノット情報を整形する。

与えられたノット列について多重度が knotMultiplicities で明示されていない箇所を修正する。

戻り値:
修正されたノット列

reverse

public JgclBsplineKnot reverse()
このノット列を反転したノット列を返す。

このメソッドが返すノット列のパラメータ定義域は 0 で始まる。

戻り値:
反転したノット列

output

protected void output(java.io.PrintWriter writer,
                      int indent,
                      int index)
出力ストリームに形状情報を出力する。

index の値は以下の意味を持つ。

		0 : 曲線用の文字列で出力する
		1 : 曲面の U 方向用の文字列で出力する
		2 : 曲面の V 方向用の文字列で出力する
 

パラメータ:
writer - PrintWriter
indent - インデントの深さ
index - キーワードを選択する値

output

public void output(java.io.OutputStream out)
出力ストリームに形状情報を出力する。
パラメータ:
out - 出力ストリーム