jp.go.ipa.jgcl
クラス JgclBsplineSurface3D

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
                                |
                                +--jp.go.ipa.jgcl.JgclBsplineSurface3D
すべての実装インタフェース:
java.io.Serializable

public class JgclBsplineSurface3D
extends JgclFreeformSurfaceWithControlPoints3D

3次元 : 非有理 (多項式) Bスプライン曲面および有理Bスプライン曲面を表すクラス。

このクラスのインスタンスは、 Bスプラインの U/V 方向のノット列に関する情報 uKnotData/vKnotData (JgclBsplineKnot) を持つ。 制御点列などを保持するフィールドについては、 スーパークラスの解説 を参照。

Bスプライン曲面の U/V それぞれの方向のパラメータ定義域は、 対応するノット列によって決まる。

(u, v) をパラメータとするBスプライン曲面 P(u, v) のパラメトリック表現は、以下の通り。

	m = U 方向の次数
	n = V 方向の次数
	p = U 方向の制御点の数
	q = V 方向の制御点の数
	K = U 方向のセグメントの数 (U 方向が開いた形式 : (p - m), U 方向が閉じた形式 : p)
	L = V 方向のセグメントの数 (V 方向が開いた形式 : (q - n), V 方向が閉じた形式 : q)
	di,j = controlPoints[i][j]
	wi,j = weights[i][j]
 
として、非有理Bスプライン曲面は
	P(u, v) = ((di,j * Nm,i(u)) の総和) * Nn,j(v) の総和	(i = 0, ..., K+m-1, j = 0, ..., L+n-1)
 
有理Bスプライン曲面は
		  ((wi,j * di,j * Nm,i(u)) の総和) * Nn,j(v) の総和
	P(u, v) = ------------------------------------------------- 	(i = 0, ..., K+m-1, j = 0, ..., L+n-1)
		  ((wi,j * Nm,i(u)) の総和) * Nn,j(v) の総和
 
ここで Nm,i(u), Nn,j(v) はBスプライン基底関数。 なお、 U 方向に閉じた形式の場合に i > (p - 1) となる i については、 対応する制御点と重みがそれぞれ dk, wk (k = i - p) となる。 同様に、 V 方向に閉じた形式の場合に j > (q - 1) となる j については、 対応する制御点と重みがそれぞれ dl, wl (l = j - q) となる。

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

クラス jp.go.ipa.jgcl.JgclFreeformSurfaceWithControlPoints3D から継承したフィールド
controlPoints, weights
 
コンストラクタの概要
JgclBsplineSurface3D(int uDegree, boolean uPeriodic, int[] uKnotMultiplicities, double[] uKnots, int vDegree, boolean vPeriodic, int[] vKnotMultiplicities, double[] vKnots, JgclPoint3D[][] controlPoints)
          ノット列を明示し、 制御点列を与えて多項式曲面としてオブジェクトを構築する。
JgclBsplineSurface3D(int uDegree, boolean uPeriodic, int[] uKnotMultiplicities, double[] uKnots, int vDegree, boolean vPeriodic, int[] vKnotMultiplicities, double[] vKnots, JgclPoint3D[][] controlPoints, double[][] weights)
          ノット列を明示し、 制御点列と重み列を与えて有理曲面としてオブジェクトを構築する。
JgclBsplineSurface3D(int uDegree, boolean uPeriodic, int uKnotSpec, int vDegree, boolean vPeriodic, int vKnotSpec, JgclPoint3D[][] controlPoints)
          ノット列を明示せずに ノット列の種別と制御点列を与えて多項式曲面としてオブジェクトを構築する。
JgclBsplineSurface3D(int uDegree, boolean uPeriodic, int uKnotSpec, int vDegree, boolean vPeriodic, int vKnotSpec, JgclPoint3D[][] controlPoints, double[][] weights)
          ノット列を明示せずに ノット列の種別、制御点列と重み列を与えて有理曲面としてオブジェクトを構築する。
JgclBsplineSurface3D(JgclPoint3D[][] points, double[] uParams, double[] vParams, boolean uIsClosed, boolean vIsClosed)
          位相的に格子状の点網と、U/V それぞれの方向の点列に対応するパラメータ値の列を与えて、 その点網を補間する多項式曲面としてオブジェクトを構築する。
JgclBsplineSurface3D(JgclPoint3D[][] points, double[] uParams, double[] vParams, boolean uIsClosed, boolean vIsClosed, JgclToleranceForDistance tol)
          位相的に格子状の点網と、U/V それぞれの方向の点列に対応するパラメータ値の列を与えて、 その点網を近似する多項式曲面としてオブジェクトを構築する。
 
メソッドの概要
 JgclPoint3D controlPointAt(int i, int j)
          この曲面の (i, j) 番目の制御点を返す。
 JgclPoint3D coordinates(double uParam, double vParam)
          この曲面の、与えられたパラメータ値での座標値を返す。
protected  JgclParametricSurface3D doTransformBy(boolean reverseTransform, JgclCartesianTransformationOperator3D transformationOperator, java.util.Hashtable transformedGeometries)
          この曲面を、与えられた幾何的変換演算子で変換する。
 JgclSurfaceDerivative3D evaluation(double uParam, double vParam)
          この曲面の、与えられたパラメータ値での偏導関数を返す。
 JgclIntersectionPoint3D[] intersect(JgclParametricCurve3D mate)
          この曲面と他の曲線の交点を求める。
 JgclSurfaceSurfaceInterference3D[] intersect(JgclParametricSurface3D mate)
          この曲面と他の曲面の交線を求める。
 JgclBsplineSurface3D offsetByBsplineSurface(JgclParameterSection uPint, JgclParameterSection vPint, double magni, int side, JgclToleranceForDistance tol)
          この曲面の指定の (パラメータ的な) 矩形区間をオフセットした曲面を 与えられた誤差で近似する Bspline 曲面を求める。
protected  void output(java.io.PrintWriter writer, int indent)
          出力ストリームに形状情報を出力する。
 JgclPointOnSurface3D[] projectFrom(JgclPoint3D point)
          与えられた点からこの曲面への投影点を求める。
 JgclVector3D[] tangentVector(double uParam, double vParam)
          この曲面の、与えられたパラメータ値での接ベクトルを返す。
 JgclBsplineSurface3D toBsplineSurface()
          この (矩形のパラメータ定義域を持つ) 有限曲面全体を厳密に再現する 有理 Bspline 曲面を返す。
 JgclBsplineSurface3D toBsplineSurface(JgclParameterSection uPint, JgclParameterSection vPint)
          この曲面の指定の (パラメータ的な) 矩形区間を厳密に再現する 有理 Bspline 曲面を返す。
 JgclMesh3D toMesh(JgclParameterSection uPint, JgclParameterSection vPint, JgclToleranceForDistance tol)
          この曲面の指定の (パラメータ的な) 矩形区間を、与えられた誤差で平面近似する 格子点群を返す。
 JgclMesh3D toMesh(JgclToleranceForDistance tol)
          この (矩形のパラメータ定義域を持つ) 有限曲面全体を、与えられた誤差で平面近似する 格子点群を返す。
 java.util.Vector toNonStructuredPoints(JgclParameterSection uParameterSection, JgclParameterSection vParameterSection, double tolerance, double[] scalingFactor)
          この曲面の指定の (パラメータ的な) 矩形区間を、 与えられた誤差で平面近似する点群を返す。
 JgclPureBezierSurface3D[][] toPureBezierSurfaceArray()
          このBスプライン曲面を再現するベジエ曲面の二次元配列を返す。
 JgclBsplineSurface3D truncate(JgclParameterSection uSection, JgclParameterSection vSection)
          このBスプライン曲面を、与えられた矩形区間で切断する。
 int uDegree()
          この曲面の U 方向の次数を返す。
 JgclBsplineSurface3D[] uDivide(double uParam)
          この曲面を、与えられた U 方向のパラメータ値で分割する。
 JgclBsplineSurface3D uElevateOneDegree()
          この曲面を、形状をそのままにして、U 方向の次数を一つ上げた曲面を返す。
 JgclBsplineSurface3D uInsertKnot(double uParam)
          この曲面の、与えられた U 方向のパラメータ位置に新たなノットを挿入する。
 JgclParametricCurve3D uIsoParametricCurve(double uParam)
          この曲面の U パラメータ一定の位置にある等パラメータ曲線を返す抽象メソッド。
 int uKnotSpec()
          この曲面の U 方向のノットの種別を返す。
 double uKnotValueAt(int n)
          この曲面の U 方向の n 番めのノット値を返す。
 int uNKnotValues()
          この曲面の U 方向のノットの数を返す。
 JgclBsplineSurface3D uShiftIfPeriodic(double newStartParam)
          この U 方向に「閉じた形式」のBスプライン曲面の形状を変えずに、 与えられた U パラメータ値に対応する点を開始点とするように 変換したものを返す。
 int vDegree()
          この曲面の V 方向の次数を返す。
 JgclBsplineSurface3D[] vDivide(double vParam)
           
 JgclBsplineSurface3D vElevateOneDegree()
          この曲面を、形状をそのままにして、V 方向の次数を一つ上げた曲面を返す。
 JgclBsplineSurface3D vInsertKnot(double vParam)
          この曲面の、与えられた V 方向のパラメータ位置に新たなノットを挿入する。
 JgclParametricCurve3D vIsoParametricCurve(double vParam)
          この曲面の V パラメータ一定の位置にある等パラメータ曲線を返す抽象メソッド。
 int vKnotSpec()
          この曲面の V 方向のノットの種別を返す。
 double vKnotValueAt(int n)
          この曲面の V 方向の n 番めのノット値を返す。
 int vNKnotValues()
          この曲面の V 方向のノットの数を返す。
 JgclBsplineSurface3D vShiftIfPeriodic(double newStartParam)
          この V 方向に「閉じた形式」のBスプライン曲面の形状を変えずに、 与えられた V パラメータ値に対応する点を開始点とするように 変換したものを返す。
 
クラス jp.go.ipa.jgcl.JgclFreeformSurfaceWithControlPoints3D から継承したメソッド
allocateDoubleArray, controlPoints, convRational0Deriv, convRational1Deriv, convRational2Deriv, isFreeform, isPolynomial, isRational, makeUniformWeights, nControlPoints, setCoordinatesToDoubleArray, toDoubleArray, uNControlPoints, vNControlPoints, weightAt, weights
 
クラス jp.go.ipa.jgcl.JgclBoundedSurface3D から継承したメソッド
fillet, offsetByBsplineSurface
 
クラス jp.go.ipa.jgcl.JgclParametricSurface3D から継承したメソッド
curvature, dimension, fillet, is3D, nearestProjectFrom, nearestProjectWithDistanceFrom, normalVector, pointToParameter, reverseTransformBy, transformBy, transformBy
 
クラス jp.go.ipa.jgcl.JgclParametricSurface から継承したメソッド
checkUValidity, checkUValidity, checkVValidity, checkVValidity, isParametric, isSurface, isUFinite, isUInfinite, isUNonPeriodic, isUPeriodic, isValidUParameter, isValidVParameter, isVFinite, isVInfinite, isVNonPeriodic, isVPeriodic, uParameterDomain, vParameterDomain
 
クラス jp.go.ipa.jgcl.JgclGeometry から継承したメソッド
getClassName, getToleranceForAngle, getToleranceForAngleAsObject, getToleranceForDistance, getToleranceForDistance2, getToleranceForDistanceAsObject, getToleranceForParameter, getToleranceForParameterAsObject, getToleranceForRealNumber, getToleranceForRealNumberAsObject, is1D, is2D, isCurve, isPlacement, isPoint, isTransformationOperator, isVector, makeIndent, output
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

JgclBsplineSurface3D

public JgclBsplineSurface3D(int uDegree,
                            boolean uPeriodic,
                            int[] uKnotMultiplicities,
                            double[] uKnots,
                            int vDegree,
                            boolean vPeriodic,
                            int[] vKnotMultiplicities,
                            double[] vKnots,
                            JgclPoint3D[][] controlPoints)
ノット列を明示し、 制御点列を与えて多項式曲面としてオブジェクトを構築する。

このコンストラクタは、 super(controlPoints) を呼び出している。

uKnotData の構築には、 new JgclBsplineKnot(uDegree, JgclKnotType.UNSPECIFIED, uPeriodic, uKnotMultiplicities, uKnots, controlPoints.length) を呼び出している。

vKnotData の構築には、 new JgclBsplineKnot(vDegree, JgclKnotType.UNSPECIFIED, vPeriodic, vKnotMultiplicities, vKnots, controlPoints[0].length) を呼び出している。

パラメータ:
uDegree - U 方向の次数
uPeriodic - U 方向が閉じた形式か否かを表すフラグ
uKnotMultiplicities - U 方向のノット多重度の配列
uKnots - U 方向のノット値の配列
vDegree - V 方向の次数
vPeriodic - V 方向が閉じた形式か否かを表すフラグ
vKnotMultiplicities - V 方向のノット多重度の配列
vKnots - V 方向のノット値の配列
controlPoints - 制御点の配列

JgclBsplineSurface3D

public JgclBsplineSurface3D(int uDegree,
                            boolean uPeriodic,
                            int uKnotSpec,
                            int vDegree,
                            boolean vPeriodic,
                            int vKnotSpec,
                            JgclPoint3D[][] controlPoints)
ノット列を明示せずに ノット列の種別と制御点列を与えて多項式曲面としてオブジェクトを構築する。

いまのところ、uKnotSpec/vKnotSpec がとり得る値は JgclKnotType.UNIFORM_KNOTS だけである (JgclKnotType.{QUASI_UNIFORM_KNOTS, PIECEWISE_BEZIER_KNOTS} には未対応) 。

このコンストラクタは、 super(controlPoints) を呼び出している。

uKnotData の構築には、 new JgclBsplineKnot(uDegree, uKnotSpec, uPeriodic, null, null, controlPoints.length) を呼び出している。

vKnotData の構築には、 new JgclBsplineKnot(vDegree, vKnotSpec, vPeriodic, null, null, controlPoints[0].length) を呼び出している。

パラメータ:
uDegree - U 方向の次数
uPeriodic - U 方向が閉じた形式か否かを表すフラグ
uKnotSpec - U 方向のノット列の種別
vDegree - V 方向の次数
vPeriodic - V 方向が閉じた形式か否かを表すフラグ
vKnotSpec - V 方向のノット列の種別
controlPoints - 制御点の配列

JgclBsplineSurface3D

public JgclBsplineSurface3D(int uDegree,
                            boolean uPeriodic,
                            int[] uKnotMultiplicities,
                            double[] uKnots,
                            int vDegree,
                            boolean vPeriodic,
                            int[] vKnotMultiplicities,
                            double[] vKnots,
                            JgclPoint3D[][] controlPoints,
                            double[][] weights)
ノット列を明示し、 制御点列と重み列を与えて有理曲面としてオブジェクトを構築する。

このコンストラクタは、 super(controlPoints, weights) を呼び出している。

uKnotData の構築には、 new JgclBsplineKnot(uDegree, JgclKnotType.UNSPECIFIED, uPeriodic, uKnotMultiplicities, uKnots, controlPoints.length) を呼び出している。

vKnotData の構築には、 new JgclBsplineKnot(vDegree, JgclKnotType.UNSPECIFIED, vPeriodic, vKnotMultiplicities, vKnots, controlPoints[0].length) を呼び出している。

パラメータ:
uDegree - U 方向の次数
uPeriodic - U 方向が閉じた形式か否かを表すフラグ
uKnotMultiplicities - U 方向のノット多重度の配列
uKnots - U 方向のノット値の配列
vDegree - V 方向の次数
vPeriodic - V 方向が閉じた形式か否かを表すフラグ
vKnotMultiplicities - V 方向のノット多重度の配列
vKnots - V 方向のノット値の配列
controlPoints - 制御点の配列
weights - 重みの配列

JgclBsplineSurface3D

public JgclBsplineSurface3D(int uDegree,
                            boolean uPeriodic,
                            int uKnotSpec,
                            int vDegree,
                            boolean vPeriodic,
                            int vKnotSpec,
                            JgclPoint3D[][] controlPoints,
                            double[][] weights)
ノット列を明示せずに ノット列の種別、制御点列と重み列を与えて有理曲面としてオブジェクトを構築する。

いまのところ、uKnotSpec/vKnotSpec がとり得る値は JgclKnotType.UNIFORM_KNOTS だけである (JgclKnotType.{QUASI_UNIFORM_KNOTS, PIECEWISE_BEZIER_KNOTS} には未対応) 。

このコンストラクタは、 super(controlPoints, weights) を呼び出している。

uKnotData の構築には、 new JgclBsplineKnot(uDegree, uKnotSpec, uPeriodic, null, null, controlPoints.length) を呼び出している。

vKnotData の構築には、 new JgclBsplineKnot(vDegree, vKnotSpec, vPeriodic, null, null, controlPoints[0].length) を呼び出している。

パラメータ:
uDegree - U 方向の次数
uPeriodic - U 方向が閉じた形式か否かを表すフラグ
uKnotSpec - U 方向のノット列の種別
vDegree - V 方向の次数
vPeriodic - V 方向が閉じた形式か否かを表すフラグ
vKnotSpec - V 方向のノット列の種別
controlPoints - 制御点の配列
weights - 重みの配列

JgclBsplineSurface3D

public JgclBsplineSurface3D(JgclPoint3D[][] points,
                            double[] uParams,
                            double[] vParams,
                            boolean uIsClosed,
                            boolean vIsClosed)
位相的に格子状の点網と、U/V それぞれの方向の点列に対応するパラメータ値の列を与えて、 その点網を補間する多項式曲面としてオブジェクトを構築する。

uIsClosed が true の場合、 (uParams の要素数) = (points の U 方向の要素数 + 1) となっている必要がある。 同様に、 vIsClosed が true の場合、 (vParams の要素数) = (points の V 方向の要素数 + 1) となっている必要がある。

パラメータ:
points - 補間する点列
uParams - 点網内の U 方向の点列の各点におけるパラメータ値の列
vParams - 点網内の V 方向の点列の各点におけるパラメータ値の列
uIsClosed - U 方向が閉じた形式か否か
vIsClosed - V 方向が閉じた形式か否か

JgclBsplineSurface3D

public JgclBsplineSurface3D(JgclPoint3D[][] points,
                            double[] uParams,
                            double[] vParams,
                            boolean uIsClosed,
                            boolean vIsClosed,
                            JgclToleranceForDistance tol)
位相的に格子状の点網と、U/V それぞれの方向の点列に対応するパラメータ値の列を与えて、 その点網を近似する多項式曲面としてオブジェクトを構築する。

uIsClosed が true の場合、 (uParams の要素数) = (points の U 方向の要素数 + 1) となっている必要がある。 同様に、 vIsClosed が true の場合、 (vParams の要素数) = (points の V 方向の要素数 + 1) となっている必要がある。

指定された精度で近似できなかった場合には、 与えられた点網を補間する曲面を生成する。

パラメータ:
points - 近似する点列
uParams - 点網内の U 方向の点列の各点におけるパラメータ値の列
vParams - 点網内の V 方向の点列の各点におけるパラメータ値の列
uIsClosed - U 方向が閉じた形式か否か
vIsClosed - V 方向が閉じた形式か否か
tol - 近似の精度
メソッドの詳細

uDegree

public int uDegree()
この曲面の U 方向の次数を返す。
戻り値:
U 方向の次数

uKnotSpec

public int uKnotSpec()
この曲面の U 方向のノットの種別を返す。
戻り値:
U 方向のノットの種別
関連項目:
JgclKnotType

uNKnotValues

public int uNKnotValues()
この曲面の U 方向のノットの数を返す。

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

戻り値:
U 方向のノットの数

uKnotValueAt

public double uKnotValueAt(int n)
この曲面の U 方向の n 番めのノット値を返す。

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

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

controlPointAt

public JgclPoint3D controlPointAt(int i,
                                  int j)
この曲面の (i, j) 番目の制御点を返す。

閉じた形式の場合はインデックスを周期的に扱う。

オーバーライド:
クラス JgclFreeformSurfaceWithControlPoints3D 内の controlPointAt
パラメータ:
i - U 方向のインデックス (i 番め)
j - V 方向のインデックス (j 番め)
戻り値:
制御点

vDegree

public int vDegree()
この曲面の V 方向の次数を返す。
戻り値:
V 方向の次数

vKnotSpec

public int vKnotSpec()
この曲面の V 方向のノットの種別を返す。
戻り値:
V 方向のノットの種別
関連項目:
JgclKnotType

vNKnotValues

public int vNKnotValues()
この曲面の V 方向のノットの数を返す。

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

戻り値:
V 方向のノットの数

vKnotValueAt

public double vKnotValueAt(int n)
この曲面の V 方向の n 番めのノット値を返す。

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

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

coordinates

public JgclPoint3D coordinates(double uParam,
                               double vParam)
この曲面の、与えられたパラメータ値での座標値を返す。

与えられたパラメータ値が定義域を外れている場合には、 JgclParameterOutOfRange の例外を発生する。

オーバーライド:
クラス JgclParametricSurface3D 内の coordinates
パラメータ:
uParam - U 方向のパラメータ値
vParam - V 方向のパラメータ値
戻り値:
座標値
関連項目:
JgclParameterOutOfRange

tangentVector

public JgclVector3D[] tangentVector(double uParam,
                                    double vParam)
この曲面の、与えられたパラメータ値での接ベクトルを返す。

ここでの接ベクトルとは、パラメータ U/V の各々についての一次偏導関数である。

結果として返る配列の要素数は 2 である。 配列の最初の要素には U パラメータについての接ベクトル、 二番目の要素には V パラメータについての接ベクトルを含む。

与えられたパラメータ値が定義域を外れている場合には、 JgclParameterOutOfRange の例外を発生する。

オーバーライド:
クラス JgclParametricSurface3D 内の tangentVector
パラメータ:
uParam - U 方向のパラメータ値
vParam - V 方向のパラメータ値
戻り値:
接ベクトル
関連項目:
JgclParameterOutOfRange

evaluation

public JgclSurfaceDerivative3D evaluation(double uParam,
                                          double vParam)
この曲面の、与えられたパラメータ値での偏導関数を返す。

与えられたパラメータ値が定義域を外れている場合には、 JgclParameterOutOfRange の例外を発生する。

オーバーライド:
クラス JgclParametricSurface3D 内の evaluation
パラメータ:
uParam - U 方向のパラメータ値
vParam - V 方向のパラメータ値
戻り値:
偏導関数
関連項目:
JgclParameterOutOfRange

projectFrom

public JgclPointOnSurface3D[] projectFrom(JgclPoint3D point)
与えられた点からこの曲面への投影点を求める。

投影点が存在しないときは長さ 0 の配列を返す。

[内部処理]
Bスプライン曲面をベジエ曲面の集合に変換し、 点からそれぞれのベジエ曲面への投影点を求めている。

オーバーライド:
クラス JgclParametricSurface3D 内の projectFrom
パラメータ:
point - 投影元の点
戻り値:
投影点の配列
関連項目:
toPureBezierSurfaceArray()

uShiftIfPeriodic

public JgclBsplineSurface3D uShiftIfPeriodic(double newStartParam)
                                      throws JgclOpenSurfaceForUDirection
この U 方向に「閉じた形式」のBスプライン曲面の形状を変えずに、 与えられた U パラメータ値に対応する点を開始点とするように 変換したものを返す。

生成されるBスプライン曲面の U 方向の開始点のパラメータ値は常に 0 になる。

パラメータ:
newStartParam - 開始点となるパラメータ値
戻り値:
与えられたパラメータ値に対応する点を開始点とするBスプライン曲面
例外:
JgclOpenSurfaceForUDirection - U 方向に開いた形式の曲面である

vShiftIfPeriodic

public JgclBsplineSurface3D vShiftIfPeriodic(double newStartParam)
                                      throws JgclOpenSurfaceForVDirection
この V 方向に「閉じた形式」のBスプライン曲面の形状を変えずに、 与えられた V パラメータ値に対応する点を開始点とするように 変換したものを返す。

生成されるBスプライン曲面の V 方向の開始点のパラメータ値は常に 0 になる。

パラメータ:
newStartParam - 開始点となるパラメータ値
戻り値:
与えられたパラメータ値に対応する点を開始点とするBスプライン曲面
例外:
JgclOpenSurfaceForVDirection - V 方向に開いた形式の曲面である

toMesh

public JgclMesh3D toMesh(JgclParameterSection uPint,
                         JgclParameterSection vPint,
                         JgclToleranceForDistance tol)
この曲面の指定の (パラメータ的な) 矩形区間を、与えられた誤差で平面近似する 格子点群を返す。

結果として返される格子点群を構成する点は、 この曲面をベースとする JgclPointOnSurface3D で あることを期待できる。

与えられたパラメータ区間が定義域を外れている場合には、 JgclParameterOutOfRange の例外を発生する。

オーバーライド:
クラス JgclParametricSurface3D 内の toMesh
パラメータ:
uPint - U 方向のパラメータ区間
vPint - V 方向のパラメータ区間
tol - 距離の許容誤差
戻り値:
この曲面の指定の区間を平面近似する格子点群
関連項目:
JgclPointOnSurface3D, JgclParameterOutOfRange

toMesh

public JgclMesh3D toMesh(JgclToleranceForDistance tol)
この (矩形のパラメータ定義域を持つ) 有限曲面全体を、与えられた誤差で平面近似する 格子点群を返す。

結果として返される格子点群を構成する点は、 この曲面をベースとする JgclPointOnSurface3D で あることを期待できる。

オーバーライド:
クラス JgclBoundedSurface3D 内の toMesh
パラメータ:
tol - 距離の許容誤差
戻り値:
この有限曲面全体を平面近似する格子点群
関連項目:
JgclPointOnSurface3D

toPureBezierSurfaceArray

public JgclPureBezierSurface3D[][] toPureBezierSurfaceArray()
このBスプライン曲面を再現するベジエ曲面の二次元配列を返す。

この曲面の U/V 両方向ともにパラメータ的に縮退していない有効セグメントに対応する ベジエ曲面の二次元配列を返す。

戻り値:
ベジエ曲面の二次元配列

toBsplineSurface

public JgclBsplineSurface3D toBsplineSurface()
この (矩形のパラメータ定義域を持つ) 有限曲面全体を厳密に再現する 有理 Bspline 曲面を返す。

this が有理曲面であれば、this を返す。

オーバーライド:
クラス JgclBoundedSurface3D 内の toBsplineSurface
戻り値:
この有限曲面全体を再現する有理 Bspline 曲面

toBsplineSurface

public JgclBsplineSurface3D toBsplineSurface(JgclParameterSection uPint,
                                             JgclParameterSection vPint)
この曲面の指定の (パラメータ的な) 矩形区間を厳密に再現する 有理 Bspline 曲面を返す。

与えられたパラメータ区間が定義域を外れている場合には、 JgclParameterOutOfRange の例外を発生する。

オーバーライド:
クラス JgclParametricSurface3D 内の toBsplineSurface
パラメータ:
uPint - U 方向のパラメータ区間
vPint - V 方向のパラメータ区間
戻り値:
この曲面の指定の区間を再現する有理 Bspline 曲面
関連項目:
JgclParameterOutOfRange, toBsplineSurface()

intersect

public JgclIntersectionPoint3D[] intersect(JgclParametricCurve3D mate)
                                    throws JgclIndefiniteSolution
この曲面と他の曲線の交点を求める。

交点が存在しないときは長さ 0 の配列を返す。

オーバーライド:
クラス JgclParametricSurface3D 内の intersect
パラメータ:
mate - 他の曲線
戻り値:
交点の配列

intersect

public JgclSurfaceSurfaceInterference3D[] intersect(JgclParametricSurface3D mate)
この曲面と他の曲面の交線を求める。

交線が存在しないときは長さ 0 の配列を返す。

二曲面が交差する箇所については、交線 (JgclIntersectionCurve3D) が返る。

二曲面が接する箇所については、交点 (JgclIntersectionPoint3D) が返ることがある。

オーバーライド:
クラス JgclParametricSurface3D 内の intersect
パラメータ:
mate - 他の曲面
戻り値:
交線 (または交点) の配列
関連項目:
JgclIntersectionCurve3D, JgclIntersectionPoint3D

offsetByBsplineSurface

public JgclBsplineSurface3D offsetByBsplineSurface(JgclParameterSection uPint,
                                                   JgclParameterSection vPint,
                                                   double magni,
                                                   int side,
                                                   JgclToleranceForDistance tol)
この曲面の指定の (パラメータ的な) 矩形区間をオフセットした曲面を 与えられた誤差で近似する Bspline 曲面を求める。
オーバーライド:
クラス JgclParametricSurface3D 内の offsetByBsplineSurface
パラメータ:
uPint - U 方向のパラメータ区間
vPint - V 方向のパラメータ区間
magni - オフセット量
side - オフセットの向き (JgclWhichSide.FRONT/BACK)
tol - 距離の許容誤差
戻り値:
この曲面の指定の矩形区間のオフセット曲面を近似する Bspline 曲面
関連項目:
JgclWhichSide

uIsoParametricCurve

public JgclParametricCurve3D uIsoParametricCurve(double uParam)
クラス JgclParametricSurface3D の記述:
この曲面の U パラメータ一定の位置にある等パラメータ曲線を返す抽象メソッド。
オーバーライド:
クラス JgclParametricSurface3D 内の uIsoParametricCurve
クラス jp.go.ipa.jgcl.JgclParametricSurface3D からコピーされたタグ:
パラメータ:
uParam - U 方向のパラメータ値
戻り値:
指定の U パラメータ値での等パラメータ曲線

vIsoParametricCurve

public JgclParametricCurve3D vIsoParametricCurve(double vParam)
クラス JgclParametricSurface3D の記述:
この曲面の V パラメータ一定の位置にある等パラメータ曲線を返す抽象メソッド。
オーバーライド:
クラス JgclParametricSurface3D 内の vIsoParametricCurve
クラス jp.go.ipa.jgcl.JgclParametricSurface3D からコピーされたタグ:
パラメータ:
vParam - V 方向のパラメータ値
戻り値:
指定の V パラメータ値での等パラメータ曲線

uInsertKnot

public JgclBsplineSurface3D uInsertKnot(double uParam)
この曲面の、与えられた U 方向のパラメータ位置に新たなノットを挿入する。

形状は変わらずに、U 方向のセグメントが一つ多いBスプライン曲面を返す。

パラメータ:
uParam - ノットを挿入する U 方向のパラメータ位置
戻り値:
ノット挿入後のBスプライン曲面

vInsertKnot

public JgclBsplineSurface3D vInsertKnot(double vParam)
この曲面の、与えられた V 方向のパラメータ位置に新たなノットを挿入する。

形状は変わらずに、V 方向のセグメントが一つ多いBスプライン曲面を返す。

パラメータ:
vParam - ノットを挿入する V 方向のパラメータ位置
戻り値:
ノット挿入後のBスプライン曲面

uDivide

public JgclBsplineSurface3D[] uDivide(double uParam)
この曲面を、与えられた U 方向のパラメータ値で分割する。

この曲面が U 方向に開いた形式の場合、 uParam に対応する等パラメータ曲線で前後二面に分割する。 結果として得られる配列の要素数は 2 で、 最初の要素には U 方向前側の曲面、 二番目の要素には U 方向後側の曲面 が入る。

この曲面が U 方向に閉じた形式の場合は、 uParam に対応する等パラメータ曲線を境界とする U 方向に開いた形式の一枚の曲面に変換する。 結果として得られる配列の要素数は 1 である。

与えられたパラメータ値が定義域を外れている場合には、 JgclParameterOutOfRange の例外を発生する。

パラメータ:
uParam - U 方向のパラメータ値
戻り値:
分割後のBスプライン曲面の配列
関連項目:
JgclParameterOutOfRange, vDivide(double)

vDivide

public JgclBsplineSurface3D[] vDivide(double vParam)

truncate

public JgclBsplineSurface3D truncate(JgclParameterSection uSection,
                                     JgclParameterSection vSection)
このBスプライン曲面を、与えられた矩形区間で切断する。

uSection の増分値が負の場合には、U 方向の進行方向が反転したBスプライン曲面を返す。 同様に、 vSection の増分値が負の場合には、V 方向の進行方向が反転したBスプライン曲面を返す。

与えられたパラメータ区間が定義域を外れている場合には、 JgclParameterOutOfRange の例外を発生する。

パラメータ:
uSection - 切断して残す部分を表す U 方向のパラメータ区間
vSection - 切断して残す部分を表す V 方向のパラメータ区間
戻り値:
切断して残した部分を表すBスプライン曲面
関連項目:
JgclParameterOutOfRange

uElevateOneDegree

public JgclBsplineSurface3D uElevateOneDegree()
この曲面を、形状をそのままにして、U 方向の次数を一つ上げた曲面を返す。
戻り値:
同一形状で、U 方向の次数が一つ上がった曲面

vElevateOneDegree

public JgclBsplineSurface3D vElevateOneDegree()
この曲面を、形状をそのままにして、V 方向の次数を一つ上げた曲面を返す。
戻り値:
同一形状で、V 方向の次数が一つ上がった曲面

toNonStructuredPoints

public java.util.Vector toNonStructuredPoints(JgclParameterSection uParameterSection,
                                              JgclParameterSection vParameterSection,
                                              double tolerance,
                                              double[] scalingFactor)
この曲面の指定の (パラメータ的な) 矩形区間を、 与えられた誤差で平面近似する点群を返す。

処理結果として得られる点群は一般に、位相的にも幾何的にも、格子状ではない。

scalingFactor は、入力用ではなく、出力用の引数である。 scalingFactor には、要素数 2 の配列を与える。 scalingFactor[0] には U 方向の縮尺倍率、 scalingFactor[1] には V 方向の縮尺倍率が返る。 これらの値は何らかの絶対値ではなく、 パラメータの進む速度 T に対して、 U/V 両方向について実空間上で曲面上の点が進む速度 Pu/Pv を表す相対値である。 つまり、パラメータが T だけ進むと、 実空間上での曲面上の点は U 方向では Pu (scalingFactor[0])、 V 方向では Pv (scalingFactor[1]) だけ進むことを表している。 T の大きさは明示されないので、この値を参照する際には、 scalingFactor[0] と scalingFactor[1] の比だけを用いるべきである。 なお、これらの値はあくまでも目安であり、厳密な速度を示すものではない。

結果として返る Vector に含まれる各要素は この曲面をベースとする JgclPointOnSurface3D であることが期待できる。

オーバーライド:
クラス JgclParametricSurface3D 内の toNonStructuredPoints
パラメータ:
uParameterSection - U 方向のパラメータ区間
vParameterSection - V 方向のパラメータ区間
tolerance - 距離の許容誤差
scalingFactor - 点群を三角形分割する際に有用と思われる U/V の縮尺倍率
戻り値:
点群を含む Vector
関連項目:
JgclPointOnSurface3D

doTransformBy

protected JgclParametricSurface3D doTransformBy(boolean reverseTransform,
                                                JgclCartesianTransformationOperator3D transformationOperator,
                                                java.util.Hashtable transformedGeometries)
この曲面を、与えられた幾何的変換演算子で変換する。

transformedGeometries は、 変換前の幾何要素をキーとし、 変換後の幾何要素を値とするハッシュテーブルである。

this が transformedGeometries 内にキーとして存在しない場合には、 this を transformationOperator で変換したものを返す。 この際にメソッド内部では this をキー、 変換結果を値として transformedGeometries に追加する。

this が transformedGeometries 内に既にキーとして存在する場合には、 実際の変換は行なわず、そのキーに対応する値を返す。 この処理は再帰的に行なわれる。

transformedGeometries は null でも構わない。 transformedGeometries は null の場合には、 常に this を transformationOperator で変換したものを返す。

オーバーライド:
クラス JgclParametricSurface3D 内の doTransformBy
パラメータ:
reverseTransform - 逆変換するのであれば true、そうでなければ false
transformationOperator - 幾何的変換演算子
transformedGeometries - 既に同様の変換を施した幾何要素を含むハッシュテーブル
戻り値:
変換後の幾何要素

output

protected void output(java.io.PrintWriter writer,
                      int indent)
出力ストリームに形状情報を出力する。
オーバーライド:
クラス JgclGeometry 内の output
パラメータ:
writer - PrintWriter
indent - インデントの深さ
関連項目:
JgclGeometry