|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Object
|
+--jp.go.ipa.jgcl.JgclGeometry
|
+--jp.go.ipa.jgcl.JgclParametricSurface
|
+--jp.go.ipa.jgcl.JgclParametricSurface3D
|
+--jp.go.ipa.jgcl.JgclBoundedSurface3D
|
+--jp.go.ipa.jgcl.JgclFreeformSurfaceWithControlPoints3D
3次元 : 制御点を持った自由曲面を表す抽象クラス。
このクラスのインスタンスは、 制御点 (JgclPoint3D) の2次元配列 controlPoints と 重み (double) の2次元配列 weights を持つ。
points および mesh は、U 方向のインデックスが先、V 方向のインデックスが後。 つまり、U 方向に i 番目、V 方向に j 番目の制御点の情報は points[i][j], weights[i][j] に格納される。
weights が null の場合には非有理曲面 (多項式曲面) を表す。
weights に配列が設定されている場合には有理曲面を表す。 weights[i][j] は controlPoints[i][j] に対応する。 なお、いまのところ weights[i][j] の値は正でなければならない。
| フィールドの概要 | |
protected JgclPoint3D[][] |
controlPoints
制御点の2次元配列。 |
protected double[][] |
weights
重みの2次元配列。 |
| コンストラクタの概要 | |
protected |
JgclFreeformSurfaceWithControlPoints3D()
何も与えずにオブジェクトを構築する。 |
protected |
JgclFreeformSurfaceWithControlPoints3D(double[][][] cpArray)
制御点(と重み)を3次元配列として与えて多項式/有理曲面を構築する |
protected |
JgclFreeformSurfaceWithControlPoints3D(double[][][] cpArray,
boolean doCheck)
制御点 (と重み) を三次元配列で与えて 多項式曲面 (あるいは有理曲面) としてオブジェクトを構築する。 |
protected |
JgclFreeformSurfaceWithControlPoints3D(JgclPoint3D[][] controlPoints)
制御点列を与えて多項式曲面としてオブジェクトを構築する。 |
protected |
JgclFreeformSurfaceWithControlPoints3D(JgclPoint3D[][] controlPoints,
double[][] weights)
制御点列と重み列を与えて有理曲面としてオブジェクトを構築する。 |
protected |
JgclFreeformSurfaceWithControlPoints3D(JgclPoint3D[][] controlPoints,
double[][] weights,
boolean doCheck)
制御点列と重み列を与えて 多項式曲面あるいは有理曲面としてオブジェクトを構築する。 |
| メソッドの概要 | |
protected static double[][][] |
allocateDoubleArray(boolean isPoly,
int uSize,
int vSize)
与えられた数の制御点の成分を格納する「実数の三次元配列」の領域を獲得する。 |
JgclPoint3D |
controlPointAt(int i,
int j)
この曲面の (i, j) 番目の制御点を返す。 |
JgclPoint3D[][] |
controlPoints()
この曲面の制御点の2次元配列を返す。 |
protected void |
convRational0Deriv(double[] d0)
同次座標で与えられた (曲面上の) 点を X/Y/Z/W 成分に変換する。 |
protected void |
convRational1Deriv(double[] d0,
double[] du,
double[] dv)
同次座標で与えられた曲面上の点と一次偏導関数を X/Y/Z/W 成分に変換する。 |
protected void |
convRational2Deriv(double[] d0,
double[] du,
double[] dv,
double[] duu,
double[] duv,
double[] dvv)
同次座標で与えられた曲面上の点/一次偏導関数/二次偏導関数を X/Y/Z/W 成分に変換する。 |
boolean |
isFreeform()
この幾何要素が自由形状か否かを返す。 |
boolean |
isPolynomial()
この曲面が多項式形式か否かを返す。 |
boolean |
isRational()
この曲面が有理形式か否かを返す。 |
double[][] |
makeUniformWeights()
この曲面の制御点の数に等しい均一な重み列を返す。 |
int |
nControlPoints()
この曲面の制御点の総数を返す。 |
protected void |
setCoordinatesToDoubleArray(boolean isPoly,
int uUicp,
int vUicp,
double[][][] doubleArray)
この曲面の制御点 (および重み) の成分を、与えられた三次元配列の要素に代入する。 |
protected double[][][] |
toDoubleArray(boolean isPoly)
|
int |
uNControlPoints()
この曲面の U 方向の制御点の数を返す。 |
int |
vNControlPoints()
この曲面の V 方向の制御点の数を返す。 |
double |
weightAt(int i,
int j)
この曲面の (i, j) 番目の重みを返す。 |
double[][] |
weights()
この曲面の重みの2次元配列を返す。 |
| クラス jp.go.ipa.jgcl.JgclBoundedSurface3D から継承したメソッド |
fillet, offsetByBsplineSurface, toBsplineSurface, toMesh |
| クラス jp.go.ipa.jgcl.JgclParametricSurface から継承したメソッド |
checkUValidity, checkUValidity, checkVValidity, checkVValidity, isParametric, isSurface, isUFinite, isUInfinite, isUNonPeriodic, isUPeriodic, isValidUParameter, isValidVParameter, isVFinite, isVInfinite, isVNonPeriodic, isVPeriodic, uParameterDomain, vParameterDomain |
| クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| フィールドの詳細 |
protected JgclPoint3D[][] controlPoints
protected double[][] weights
多項式曲面であれば null とする。
| コンストラクタの詳細 |
protected JgclFreeformSurfaceWithControlPoints3D()
各フィールドには値を設定しない。
protected JgclFreeformSurfaceWithControlPoints3D(JgclPoint3D[][] controlPoints)
以下のいずれかの場合には、JgclInvalidArgumentValue の例外を発生する。
controlPoints - 制御点の2次元配列JgclInvalidArgumentValue
protected JgclFreeformSurfaceWithControlPoints3D(JgclPoint3D[][] controlPoints,
double[][] weights)
以下のいずれかの場合には、JgclInvalidArgumentValue の例外を発生する。
controlPoints - 制御点の2次元配列weights - 重みの2次元配列JgclInvalidArgumentValueprotected JgclFreeformSurfaceWithControlPoints3D(double[][][] cpArray)
cpArray - 制御点、重みを表す配列
protected JgclFreeformSurfaceWithControlPoints3D(double[][][] cpArray,
boolean doCheck)
cpArray の長さを U 方向の制御点の数、 cpArray[0] の長さを V 方向の制御点の数とする。 また、cpArray[0][0] の長さが 3 であれば多項式曲面、4 であれば有理曲面とする。
cpArray[i][j] の長さが 3 の場合、 cpArray[i][j][0] は (i, j) 番目の制御点の X 成分、 cpArray[i][j][1] は (i, j) 番目の制御点の Y 成分、 cpArray[i][j][2] は (i, j) 番目の制御点の Z 成分 を示すものとする。
cpArray[i][j] の長さが 4 の場合、 cpArray[i][j][0] は ((i, j) 番目の制御点の X 成分 * (i, j) 番目の重み)、 cpArray[i][j][1] は ((i, j) 番目の制御点の Y 成分 * (i, j) 番目の重み)、 cpArray[i][j][2] は ((i, j) 番目の制御点の Z 成分 * (i, j) 番目の重み)、 cpArray[i][j][3] は (i, j) 番目の重み を示すものとする。
doCheck が true の場合、以下のチェックを行なう。
以下のいずれかの場合には、JgclInvalidArgumentValue の例外を発生する。
- U 方向の制御点の数が 2 より小さい
- V 方向の制御点の数が 2 より小さい
- ある重みの値が正でない
- ある重みの値 w について、 (w / (重み列内の最大値)) が JgclMachineEpsilon.DOUBLE より小さくなる。
cpArray - 制御点 (および重み) の配列doCheck - 引数のチェックを行なうかどうかJgclInvalidArgumentValue
protected JgclFreeformSurfaceWithControlPoints3D(JgclPoint3D[][] controlPoints,
double[][] weights,
boolean doCheck)
doCheck が false の場合、 与えられた controlPoints および weights の値を 対応するフィールドにそのまま設定する。 ここで weights が null であれば、曲面は非有理 (多項式) 形式になる。 なお、controlPoints に null が与えられると、予期できない結果を招く。
doCheck が true の場合、
weights が値を持てば
JgclFreeformSurfaceWithControlPoints3D(JgclPoint3D[][], double[][])、
weights が null であれば
JgclFreeformSurfaceWithControlPoints3D(JgclPoint3D[][])
と同様の処理を行なう。
controlPoitns - 制御点の配列weights - 重みの配列doCheck - 引数のチェックを行なうかどうか| メソッドの詳細 |
public JgclPoint3D[][] controlPoints()
public JgclPoint3D controlPointAt(int i,
int j)
i - U 方向のインデックス (i 番目)j - V 方向のインデックス (j 番目)public double[][] weights()
曲面が多項式曲面の場合は null を返す。
public double weightAt(int i,
int j)
曲面が多項式曲面の場合には JgclInvalidArgumentValue の例外を投げる。
i - U 方向のインデックス (i 番目)j - V 方向のインデックス (j 番目)JgclInvalidArgumentValuepublic int uNControlPoints()
vNControlPoints(),
nControlPoints()public int vNControlPoints()
uNControlPoints(),
nControlPoints()public int nControlPoints()
(U 方向の制御点の数 * V 方向の制御点の数) を返す。
uNControlPoints(),
vNControlPoints()public boolean isRational()
public boolean isPolynomial()
protected static double[][][] allocateDoubleArray(boolean isPoly,
int uSize,
int vSize)
isPoly - 多項式形式か否かuSize - 配列の第一次元の要素数 (U 方向の制御点の数)vSize - 配列の第二次元の要素数 (V 方向の制御点の数)
protected void setCoordinatesToDoubleArray(boolean isPoly,
int uUicp,
int vUicp,
double[][][] doubleArray)
isPoly が true の場合、 doubleArray[i][j][0] は (i, j) 番目の制御点の X 成分、 doubleArray[i][j][1] は (i, j) 番目の制御点の Y 成分 doubleArray[i][j][2] は (i, j) 番目の制御点の Z 成分 を表す。
isPoly が false の場合、 doubleArray[i][j][0] は ((i, j) 番目の制御点の X 成分 * (i, j) 番目の重み)、 doubleArray[i][j][1] は ((i, j) 番目の制御点の Y 成分 * (i, j) 番目の重み)、 doubleArray[i][j][2] は ((i, j) 番目の制御点の Z 成分 * (i, j) 番目の重み)、 doubleArray[i][j][3] は (i, j) 番目の重み を表す。
isPoly - 多項式形式か否かuUicp - 配列の第一次元の要素数 (配列に値を代入する U 方向の制御点の数)vUicp - 配列の第二次元の要素数 (配列に値を代入する V 方向の制御点の数)doubleArray - 制御点の成分を格納する三次元配列protected double[][][] toDoubleArray(boolean isPoly)
protected void convRational0Deriv(double[] d0)
(wx, wy, wz, w) で与えられた (曲面上の) 点を (x, y, z, w) に変換する。
d0 - 曲面上の点
protected void convRational1Deriv(double[] d0,
double[] du,
double[] dv)
(wx, wy, wz, w) で与えられた曲面上の点と一次偏導関数を (x, y, z, w) に変換する。
d0 - 曲面上の点du - U 方向の一次偏導関数dv - V 方向の一次偏導関数
protected void convRational2Deriv(double[] d0,
double[] du,
double[] dv,
double[] duu,
double[] duv,
double[] dvv)
(wx, wy, wz, w) で与えられた曲面上の点/一次偏導関数/二次偏導関数を (x, y, z, w) に変換する。
d0 - 曲面上の点du - U 方向の一次偏導関数dv - V 方向の一次偏導関数duv - U 方向の二次偏導関数duv - UV 方向の一次混合偏導関数dvv - V 方向の二次偏導関数public boolean isFreeform()
JgclGeometry 内の isFreeformpublic double[][] makeUniformWeights()
結果として得られる配列の各要素の値は 1 である。
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||