jp.go.ipa.jgcl
クラス JgclFreeformCurveWithControlPoints3D

java.lang.Object
  |
  +--jp.go.ipa.jgcl.JgclGeometry
        |
        +--jp.go.ipa.jgcl.JgclParametricCurve
              |
              +--jp.go.ipa.jgcl.JgclParametricCurve3D
                    |
                    +--jp.go.ipa.jgcl.JgclBoundedCurve3D
                          |
                          +--jp.go.ipa.jgcl.JgclFreeformCurveWithControlPoints3D
すべての実装インタフェース:
java.io.Serializable
直系の既知のサブクラス:
JgclBsplineCurve3D, JgclPureBezierCurve3D

public abstract class JgclFreeformCurveWithControlPoints3D
extends JgclBoundedCurve3D

3次元 : 制御点を持った自由曲線を表す抽象クラス。

このクラスのインスタンスは、 制御点 (JgclPoint3D) の配列 controlPoints と 重み (double) の配列 weights を持つ。

weights が null の場合には非有理曲線 (多項式曲線) を表す。

weights に配列が設定されている場合には有理曲線を表す。 weights[i] は controlPoints[i] に対応する。 なお、いまのところ weights[i] の値は正でなければならない。

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

フィールドの概要
protected  JgclPoint3D[] controlPoints
          制御点の配列。
protected  double[] weights
          重みの配列。
 
コンストラクタの概要
protected JgclFreeformCurveWithControlPoints3D()
          何も与えずにオブジェクトを構築する。
protected JgclFreeformCurveWithControlPoints3D(double[][] cpArray)
          制御点 (と重み) を二次元配列で与えて 多項式曲線 (あるいは有理曲線) としてオブジェクトを構築する。
protected JgclFreeformCurveWithControlPoints3D(JgclPoint3D[] controlPoints)
          制御点列を与えて多項式曲線としてオブジェクトを構築する。
protected JgclFreeformCurveWithControlPoints3D(JgclPoint3D[] controlPoints, double[] weights)
          制御点列と重み列を与えて有理曲線としてオブジェクトを構築する。
protected JgclFreeformCurveWithControlPoints3D(JgclPoint3D[] controlPoints, double[] weights, boolean doCheck)
          制御点列と重み列を与えて 多項式曲線あるいは有理曲線としてオブジェクトを構築する。
 
メソッドの概要
protected static double[][] allocateDoubleArray(boolean isPoly, int size)
          与えられた数の制御点の成分を格納する「実数の二次元配列」の領域を獲得する。
 JgclPoint3D controlPointAt(int i)
          この曲線の i 番目の制御点を返す。
 JgclPoint3D[] controlPoints()
          この曲線の制御点列を返す。
protected  void convRational0Deriv(double[] d0D)
          同次座標で与えられた (曲線上の) 点を X/Y/Z/W 成分に変換する。
protected  void convRational1Deriv(double[] d0D, double[] d1D)
          同次座標で与えられた曲線上の点と一次導関数を X/Y/Z/W 成分に変換する。
protected  void convRational2Deriv(double[] d0D, double[] d1D, double[] d2D)
          同次座標で与えられた曲線上の点/一次導関数/二次導関数を X/Y/Z/W 成分に変換する。
protected  void convRational3Deriv(double[] d0D, double[] d1D, double[] d2D, double[] d3D)
          同次座標で与えられた曲線上の点/一次導関数/二次導関数/三次導関数を X/Y/Z/W 成分に変換する。
 boolean isFreeform()
          この幾何要素が自由形状か否かを返す。
 boolean isPolynomial()
          この曲線が多項式形式か否かを返す。
 boolean isRational()
          この曲線が有理形式か否かを返す。
 double[] makeUniformWeights()
          この曲線の制御点の数に等しい均一な重み列を返す。
 int nControlPoints()
          この曲線の制御点の数を返す。
protected  void setCoordinatesToDoubleArray(boolean isPoly, int uicp, double[][] doubleArray)
          この曲線の制御点 (および重み) の成分を、与えられた二次元配列の要素に代入する。
protected  double[][] toDoubleArray(boolean isPoly)
          この曲線の制御点 (および重み) の成分を含む「実数の二次元配列」を返す。
 double weightAt(int i)
          この曲線の i 番目の制御点の重みを返す。
 double[] weights()
          この曲線の重み列を返す。
 
クラス jp.go.ipa.jgcl.JgclBoundedCurve3D から継承したメソッド
endPoint, interfere, length, startPoint, toBsplineCurve, toPolyline
 
クラス jp.go.ipa.jgcl.JgclParametricCurve3D から継承したメソッド
checkProjection, coordinates, curvature, dimension, doTransformBy, evaluation, hasPolyline, identicalParameter, inflexion, intersect, intersect, is3D, isComposedOfOnlyPolylines, nearestProjectFrom, nearestProjectWithDistanceFrom, parallelTranslate, pointToParameter, projectFrom, reverseTransformBy, singular, tangentVector, toBsplineCurve, toPolyline, torsion, transformBy, transformBy
 
クラス jp.go.ipa.jgcl.JgclParametricCurve から継承したメソッド
checkValidity, checkValidity, isClosed, isCurve, isFinite, isInfinite, isNonPeriodic, isOpen, isParametric, isPeriodic, isValid, length, parameterDomain
 
クラス jp.go.ipa.jgcl.JgclGeometry から継承したメソッド
getClassName, getToleranceForAngle, getToleranceForAngleAsObject, getToleranceForDistance, getToleranceForDistance2, getToleranceForDistanceAsObject, getToleranceForParameter, getToleranceForParameterAsObject, getToleranceForRealNumber, getToleranceForRealNumberAsObject, is1D, is2D, isPlacement, isPoint, isSurface, isTransformationOperator, isVector, makeIndent, output, output
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

controlPoints

protected JgclPoint3D[] controlPoints
制御点の配列。

weights

protected double[] weights
重みの配列。

多項式曲線であれば null とする。

コンストラクタの詳細

JgclFreeformCurveWithControlPoints3D

protected JgclFreeformCurveWithControlPoints3D()
何も与えずにオブジェクトを構築する。

各フィールドには値を設定しない。


JgclFreeformCurveWithControlPoints3D

protected JgclFreeformCurveWithControlPoints3D(JgclPoint3D[] controlPoints)
制御点列を与えて多項式曲線としてオブジェクトを構築する。

以下のいずれかの場合には、JgclInvalidArgumentValue の例外を発生する。

パラメータ:
controlPoints - 制御点の配列
関連項目:
JgclInvalidArgumentValue

JgclFreeformCurveWithControlPoints3D

protected JgclFreeformCurveWithControlPoints3D(JgclPoint3D[] controlPoints,
                                               double[] weights)
制御点列と重み列を与えて有理曲線としてオブジェクトを構築する。

以下のいずれかの場合には、JgclInvalidArgumentValue の例外を発生する。

パラメータ:
controlPoints - 制御点の配列
weights - 重みの配列
関連項目:
JgclInvalidArgumentValue

JgclFreeformCurveWithControlPoints3D

protected JgclFreeformCurveWithControlPoints3D(double[][] cpArray)
制御点 (と重み) を二次元配列で与えて 多項式曲線 (あるいは有理曲線) としてオブジェクトを構築する。

cpArray の長さを制御点の数とする。 また、cpArray[0] の長さが 3 であれば多項式曲線、4 であれば有理曲線とする。

cpArray[i] の長さが 3 の場合、 cpArray[i][0] は i 番目の制御点の X 成分、 cpArray[i][1] は i 番目の制御点の Y 成分、 cpArray[i][2] は i 番目の制御点の Z 成分 を示すものとする。

cpArray[i] の長さが 4 の場合、 cpArray[i][0] は (i 番目の制御点の X 成分 * i 番目の重み)、 cpArray[i][1] は (i 番目の制御点の Y 成分 * i 番目の重み)、 cpArray[i][2] は (i 番目の制御点の Z 成分 * i 番目の重み)、 cpArray[i][3] は i 番目の重み を示すものとする。

以下のいずれかの場合には、JgclInvalidArgumentValue の例外を発生する。

パラメータ:
cpArray - 制御点 (および重み) の配列
関連項目:
JgclInvalidArgumentValue

JgclFreeformCurveWithControlPoints3D

protected JgclFreeformCurveWithControlPoints3D(JgclPoint3D[] controlPoints,
                                               double[] weights,
                                               boolean doCheck)
制御点列と重み列を与えて 多項式曲線あるいは有理曲線としてオブジェクトを構築する。

doCheck が false の場合、 与えられた controlPoints および weights の値を 対応するフィールドにそのまま設定する。 ここで weights が null であれば、曲線は非有理 (多項式) 形式になる。 なお、controlPoints に null が与えられると、予期できない結果を招く。

doCheck が true の場合、 weights が値を持てば JgclFreeformCurveWithControlPoints3D(JgclPoint3D[], double[])、 weights が null であれば JgclFreeformCurveWithControlPoints3D(JgclPoint3D[]) と同様の処理を行なう。

パラメータ:
controlPoitns - 制御点の配列
weights - 重みの配列
doCheck - 引数のチェックを行なうかどうか
メソッドの詳細

controlPoints

public JgclPoint3D[] controlPoints()
この曲線の制御点列を返す。
戻り値:
制御点の配列

controlPointAt

public JgclPoint3D controlPointAt(int i)
この曲線の i 番目の制御点を返す。
パラメータ:
i - インデックス
戻り値:
制御点

weights

public double[] weights()
この曲線の重み列を返す。

曲線が多項式曲線の場合は null を返す。

戻り値:
重みの配列

weightAt

public double weightAt(int i)
この曲線の i 番目の制御点の重みを返す。

曲線が多項式曲線の場合には JgclInvalidArgumentValue の例外を投げる。

パラメータ:
i - インデックス
戻り値:
重み
関連項目:
JgclInvalidArgumentValue

nControlPoints

public int nControlPoints()
この曲線の制御点の数を返す。
戻り値:
制御点の数

isRational

public boolean isRational()
この曲線が有理形式か否かを返す。
戻り値:
有理形式ならば true、そうでなければ false

isPolynomial

public boolean isPolynomial()
この曲線が多項式形式か否かを返す。
戻り値:
多項式形式ならば true、そうでなければ false

allocateDoubleArray

protected static double[][] allocateDoubleArray(boolean isPoly,
                                                int size)
与えられた数の制御点の成分を格納する「実数の二次元配列」の領域を獲得する。
パラメータ:
isPoly - 多項式形式か否か
size - 配列の第一次元の要素数 (制御点の数)
戻り値:
制御点の成分を格納する配列

setCoordinatesToDoubleArray

protected void setCoordinatesToDoubleArray(boolean isPoly,
                                           int uicp,
                                           double[][] doubleArray)
この曲線の制御点 (および重み) の成分を、与えられた二次元配列の要素に代入する。

isPoly が true の場合、 doubleArray[i][0] は i 番目の制御点の X 成分、 doubleArray[i][1] は i 番目の制御点の Y 成分 doubleArray[i][2] は i 番目の制御点の Z 成分 を表す。

isPoly が false の場合、 doubleArray[i][0] は (i 番目の制御点の X 成分 * i 番目の重み)、 doubleArray[i][1] は (i 番目の制御点の Y 成分 * i 番目の重み)、 doubleArray[i][2] は (i 番目の制御点の Z 成分 * i 番目の重み)、 doubleArray[i][3] は i 番目の重み を表す。

パラメータ:
isPoly - 多項式形式か否か
uicp - 配列の第一次元の要素数 (配列に値を代入する制御点の数)
doubleArray - 制御点の成分を格納する二次元配列

toDoubleArray

protected double[][] toDoubleArray(boolean isPoly)
この曲線の制御点 (および重み) の成分を含む「実数の二次元配列」を返す。

isPoly が true の場合、 このメソッドが返す二次元配列 C の要素 C[i][0] は i 番目の制御点の X 成分、 C[i][1] は i 番目の制御点の Y 成分 C[i][2] は i 番目の制御点の Z 成分 を表す。

isPoly が false の場合、 このメソッドが返す二次元配列 C の要素 C[i][0] は (i 番目の制御点の X 成分 * i 番目の重み)、 C[i][1] は (i 番目の制御点の Y 成分 * i 番目の重み)、 C[i][2] は (i 番目の制御点の Z 成分 * i 番目の重み)、 C[i][3] は i 番目の重み を表す。

パラメータ:
isPoly - 多項式形式か否か
戻り値:
制御点 (および重み) の成分を含む配列

convRational0Deriv

protected void convRational0Deriv(double[] d0D)
同次座標で与えられた (曲線上の) 点を X/Y/Z/W 成分に変換する。

(wx, wy, wz, w) で与えられた (曲線上の) 点を (x, y, z, w) に変換する。

パラメータ:
d0D - 曲線上の点

convRational1Deriv

protected void convRational1Deriv(double[] d0D,
                                  double[] d1D)
同次座標で与えられた曲線上の点と一次導関数を X/Y/Z/W 成分に変換する。

(wx, wy, wz, w) で与えられた曲線上の点と一次導関数を (x, y, z, w) に変換する。

パラメータ:
d0D - 曲線上の点
d1D - 一次導関数

convRational2Deriv

protected void convRational2Deriv(double[] d0D,
                                  double[] d1D,
                                  double[] d2D)
同次座標で与えられた曲線上の点/一次導関数/二次導関数を X/Y/Z/W 成分に変換する。

(wx, wy, wz, w) で与えられた曲線上の点/一次導関数/二次導関数を (x, y, z, w) に変換する。

パラメータ:
d0D - 曲線上の点
d1D - 一次導関数
d2D - 二次導関数

convRational3Deriv

protected void convRational3Deriv(double[] d0D,
                                  double[] d1D,
                                  double[] d2D,
                                  double[] d3D)
同次座標で与えられた曲線上の点/一次導関数/二次導関数/三次導関数を X/Y/Z/W 成分に変換する。

(wx, wy, wz, w) で与えられた曲線上の点/一次導関数/二次導関数/三次導関数を (x, y, z, w) に変換する。

パラメータ:
d0D - 曲線上の点
d1D - 一次導関数
d2D - 二次導関数
d3D - 三次導関数

isFreeform

public boolean isFreeform()
この幾何要素が自由形状か否かを返す。
オーバーライド:
クラス JgclGeometry 内の isFreeform
戻り値:
常に true

makeUniformWeights

public double[] makeUniformWeights()
この曲線の制御点の数に等しい均一な重み列を返す。

結果として得られる配列の各要素の値は 1 である。

戻り値:
重みの配列