|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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
3次元 : 制御点を持った自由曲線を表す抽象クラス。
このクラスのインスタンスは、 制御点 (JgclPoint3D) の配列 controlPoints と 重み (double) の配列 weights を持つ。
weights が null の場合には非有理曲線 (多項式曲線) を表す。
weights に配列が設定されている場合には有理曲線を表す。 weights[i] は controlPoints[i] に対応する。 なお、いまのところ weights[i] の値は正でなければならない。
フィールドの概要 | |
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.JgclParametricCurve から継承したメソッド |
checkValidity, checkValidity, isClosed, isCurve, isFinite, isInfinite, isNonPeriodic, isOpen, isParametric, isPeriodic, isValid, length, parameterDomain |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
フィールドの詳細 |
protected JgclPoint3D[] controlPoints
protected double[] weights
多項式曲線であれば null とする。
コンストラクタの詳細 |
protected JgclFreeformCurveWithControlPoints3D()
各フィールドには値を設定しない。
protected JgclFreeformCurveWithControlPoints3D(JgclPoint3D[] controlPoints)
以下のいずれかの場合には、JgclInvalidArgumentValue の例外を発生する。
controlPoints
- 制御点の配列JgclInvalidArgumentValue
protected JgclFreeformCurveWithControlPoints3D(JgclPoint3D[] controlPoints, double[] weights)
以下のいずれかの場合には、JgclInvalidArgumentValue の例外を発生する。
controlPoints
- 制御点の配列weights
- 重みの配列JgclInvalidArgumentValue
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
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
- 引数のチェックを行なうかどうかメソッドの詳細 |
public JgclPoint3D[] controlPoints()
public JgclPoint3D controlPointAt(int i)
i
- インデックスpublic double[] weights()
曲線が多項式曲線の場合は null を返す。
public double weightAt(int i)
曲線が多項式曲線の場合には JgclInvalidArgumentValue の例外を投げる。
i
- インデックスJgclInvalidArgumentValue
public int nControlPoints()
public boolean isRational()
public boolean isPolynomial()
protected static double[][] allocateDoubleArray(boolean isPoly, int size)
isPoly
- 多項式形式か否かsize
- 配列の第一次元の要素数 (制御点の数)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
- 制御点の成分を格納する二次元配列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
- 多項式形式か否かprotected void convRational0Deriv(double[] d0D)
(wx, wy, wz, w) で与えられた (曲線上の) 点を (x, y, z, w) に変換する。
d0D
- 曲線上の点protected void convRational1Deriv(double[] d0D, double[] d1D)
(wx, wy, wz, w) で与えられた曲線上の点と一次導関数を (x, y, z, w) に変換する。
d0D
- 曲線上の点d1D
- 一次導関数protected void convRational2Deriv(double[] d0D, double[] d1D, double[] d2D)
(wx, wy, wz, w) で与えられた曲線上の点/一次導関数/二次導関数を (x, y, z, w) に変換する。
d0D
- 曲線上の点d1D
- 一次導関数d2D
- 二次導関数protected void convRational3Deriv(double[] d0D, double[] d1D, double[] d2D, double[] d3D)
(wx, wy, wz, w) で与えられた曲線上の点/一次導関数/二次導関数/三次導関数を (x, y, z, w) に変換する。
d0D
- 曲線上の点d1D
- 一次導関数d2D
- 二次導関数d3D
- 三次導関数public boolean isFreeform()
JgclGeometry
内の isFreeform
public double[] makeUniformWeights()
結果として得られる配列の各要素の値は 1 である。
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |