jp.go.ipa.jgcl
クラス JgclParametricSurface3D

java.lang.Object
  |
  +--jp.go.ipa.jgcl.JgclGeometry
        |
        +--jp.go.ipa.jgcl.JgclParametricSurface
              |
              +--jp.go.ipa.jgcl.JgclParametricSurface3D
すべての実装インタフェース:
java.io.Serializable
直系の既知のサブクラス:
JgclBoundedSurface3D, JgclElementarySurface3D, JgclSweptSurface3D

public abstract class JgclParametricSurface3D
extends JgclParametricSurface

3次元のパラメトリックな曲面のクラス階層のルートとなる抽象クラス。

このクラスは、二つの実数値で表されるパラメータの組 (u, v) の値によって、 位置が決定される3次元の曲面 P(u, v) 全般が持つ性質を表現する。

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

コンストラクタの概要
protected JgclParametricSurface3D()
          オブジェクトを構築する。
 
メソッドの概要
abstract  JgclPoint3D coordinates(double uParam, double vParam)
          この曲面の、与えられたパラメータ値での座標値を返す抽象メソッド。
 JgclSurfaceCurvature3D curvature(double uParam, double vParam)
          この曲面の、与えられたパラメータ値での主曲率情報を返す。
 int dimension()
          この曲面の次元を返す。
protected abstract  JgclParametricSurface3D doTransformBy(boolean reverseTransform, JgclCartesianTransformationOperator3D transformationOperator, java.util.Hashtable transformedGeometries)
          この曲面を、与えられた幾何的変換演算子で変換する。
abstract  JgclSurfaceDerivative3D evaluation(double uParam, double vParam)
          この曲面の、与えられたパラメータ値での偏導関数を返す抽象メソッド。
 JgclFilletObject3D[] fillet(JgclParameterSection uSect1, JgclParameterSection vSect1, int side1, JgclParametricSurface3D mate, JgclParameterSection uSect2, JgclParameterSection vSect2, int side2, double radius)
          この曲面の指定の (パラメータ的な) 矩形区間と、 他の曲面の指定の (パラメータ的な) 矩形区間におけるフィレットを求める。
abstract  JgclIntersectionPoint3D[] intersect(JgclParametricCurve3D mate)
          この曲面と他の曲線の交点を求める抽象メソッド。
abstract  JgclSurfaceSurfaceInterference3D[] intersect(JgclParametricSurface3D mate)
          この曲面と他の曲面との交線を求める抽象メソッド。
 boolean is3D()
          この曲面が3次元か否かを返す。
 JgclPointOnSurface3D nearestProjectFrom(JgclPoint3D pnt)
          与えられた点 P からこの曲面への投影点の内で、P に最も近い点を返す。
 JgclPointOnSurface3D nearestProjectWithDistanceFrom(JgclPoint3D pnt, double distance)
          与えられた点 P からこの曲面への投影点の内で、P からの距離が指定の値に最も近い点を返す。
 JgclVector3D normalVector(double uParam, double vParam)
          この曲面の、与えられたパラメータ値での法線ベクトルを返す。
abstract  JgclBsplineSurface3D offsetByBsplineSurface(JgclParameterSection uSect, JgclParameterSection vSect, double magni, int side, JgclToleranceForDistance tol)
          この曲面の指定の (パラメータ的な) 矩形区間をオフセットした曲面を 与えられた誤差で近似する Bspline 曲面を求める抽象メソッド。
 double[] pointToParameter(JgclPoint3D pnt)
          与えられた面上点の、この曲面でのパラメータ値を求める。
abstract  JgclPointOnSurface3D[] projectFrom(JgclPoint3D point)
          与えられた点からこの曲面への投影点を求める抽象メソッド。
 JgclParametricSurface3D reverseTransformBy(JgclCartesianTransformationOperator3D transformationOperator, java.util.Hashtable transformedGeometries)
          この曲面を、与えられた幾何的変換演算子で逆変換する。
abstract  JgclVector3D[] tangentVector(double uParam, double vParam)
          この曲面の、与えられたパラメータ値での接ベクトルを返す抽象メソッド。
abstract  JgclBsplineSurface3D toBsplineSurface(JgclParameterSection uPint, JgclParameterSection vPint)
          この曲面の指定の (パラメータ的な) 矩形区間を厳密に再現する 有理 Bspline 曲面を返す抽象メソッド。
abstract  JgclMesh3D toMesh(JgclParameterSection uPint, JgclParameterSection vPint, JgclToleranceForDistance tol)
          この曲面の指定の (パラメータ的な) 矩形区間を、与えられた誤差で平面近似する 格子点群を返す抽象メソッド。
abstract  java.util.Vector toNonStructuredPoints(JgclParameterSection uParameterSection, JgclParameterSection vParameterSection, double tolerance, double[] scalingFactor)
          この曲面の指定の (パラメータ的な) 矩形区間を、与えられた誤差で平面近似する 点群を返す抽象メソッド。
 JgclParametricSurface3D transformBy(boolean reverseTransform, JgclCartesianTransformationOperator3D transformationOperator, java.util.Hashtable transformedGeometries)
          この曲面を、与えられた幾何的変換演算子で変換する。
 JgclParametricSurface3D transformBy(JgclCartesianTransformationOperator3D transformationOperator, java.util.Hashtable transformedGeometries)
          この曲面を、与えられた幾何的変換演算子で変換する。
abstract  JgclParametricCurve3D uIsoParametricCurve(double uParam)
          この曲面の U パラメータ一定の位置にある等パラメータ曲線を返す抽象メソッド。
abstract  JgclParametricCurve3D vIsoParametricCurve(double vParam)
          この曲面の V パラメータ一定の位置にある等パラメータ曲線を返す抽象メソッド。
 
クラス 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, isFreeform, isPlacement, isPoint, isTransformationOperator, isVector, makeIndent, output, output
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

JgclParametricSurface3D

protected JgclParametricSurface3D()
オブジェクトを構築する。
メソッドの詳細

coordinates

public abstract JgclPoint3D coordinates(double uParam,
                                        double vParam)
この曲面の、与えられたパラメータ値での座標値を返す抽象メソッド。
パラメータ:
uParam - U 方向パラメータ値
vParam - V 方向パラメータ値
戻り値:
座標値

tangentVector

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

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

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

パラメータ:
uParam - U 方向パラメータ値
vParam - V 方向パラメータ値
戻り値:
接ベクトルの配列

normalVector

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

このメソッドが返す法線ベクトルは、正規化された単位ベクトルである。

パラメータ:
uParam - U 方向のパラメータ値
vParam - V 方向のパラメータ値
戻り値:
正規化された法線ベクトル

curvature

public JgclSurfaceCurvature3D curvature(double uParam,
                                        double vParam)
この曲面の、与えられたパラメータ値での主曲率情報を返す。
パラメータ:
uParam - U 方向のパラメータ値
vParam - V 方向のパラメータ値
戻り値:
主曲率情報

evaluation

public abstract JgclSurfaceDerivative3D evaluation(double uParam,
                                                   double vParam)
この曲面の、与えられたパラメータ値での偏導関数を返す抽象メソッド。
パラメータ:
uParam - U 方向のパラメータ値
vParam - V 方向のパラメータ値
戻り値:
偏導関数

projectFrom

public abstract JgclPointOnSurface3D[] projectFrom(JgclPoint3D point)
                                            throws JgclIndefiniteSolution
与えられた点からこの曲面への投影点を求める抽象メソッド。

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

パラメータ:
point - 投影元の点
戻り値:
投影点の配列
例外:
JgclIndefiniteSolution - 解が不定である

nearestProjectFrom

public JgclPointOnSurface3D nearestProjectFrom(JgclPoint3D pnt)
与えられた点 P からこの曲面への投影点の内で、P に最も近い点を返す。

投影点が存在しない場合には null を返す。

パラメータ:
pnt - 投影元の点
戻り値:
投影元の点に最も近い投影点
関連項目:
projectFrom(JgclPoint3D), nearestProjectWithDistanceFrom(JgclPoint3D, double)

nearestProjectWithDistanceFrom

public JgclPointOnSurface3D nearestProjectWithDistanceFrom(JgclPoint3D pnt,
                                                           double distance)
与えられた点 P からこの曲面への投影点の内で、P からの距離が指定の値に最も近い点を返す。

投影点が存在しない場合には null を返す。

パラメータ:
pnt - 投影元の点
distance - 距離
戻り値:
指定した距離に最も近い投影点
関連項目:
projectFrom(JgclPoint3D), nearestProjectFrom(JgclPoint3D)

toMesh

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

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

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

toBsplineSurface

public abstract JgclBsplineSurface3D toBsplineSurface(JgclParameterSection uPint,
                                                      JgclParameterSection vPint)
この曲面の指定の (パラメータ的な) 矩形区間を厳密に再現する 有理 Bspline 曲面を返す抽象メソッド。
パラメータ:
uPint - U 方向のパラメータ区間
vPint - V 方向のパラメータ区間
戻り値:
この曲面の指定の区間を再現する有理 Bspline 曲面

intersect

public abstract JgclIntersectionPoint3D[] intersect(JgclParametricCurve3D mate)
                                             throws JgclIndefiniteSolution
この曲面と他の曲線の交点を求める抽象メソッド。

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

パラメータ:
mate - 他の曲線
戻り値:
交点の配列
例外:
JgclIndefiniteSolution - 解が不定である

intersect

public abstract JgclSurfaceSurfaceInterference3D[] intersect(JgclParametricSurface3D mate)
                                                      throws JgclIndefiniteSolution
この曲面と他の曲面との交線を求める抽象メソッド。

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

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

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

パラメータ:
mate - 他の曲面
戻り値:
交線 (または交点) の配列
例外:
JgclIndefiniteSolution - 解が不定である
関連項目:
JgclIntersectionCurve3D, JgclIntersectionPoint3D

offsetByBsplineSurface

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

fillet

public JgclFilletObject3D[] fillet(JgclParameterSection uSect1,
                                   JgclParameterSection vSect1,
                                   int side1,
                                   JgclParametricSurface3D mate,
                                   JgclParameterSection uSect2,
                                   JgclParameterSection vSect2,
                                   int side2,
                                   double radius)
                            throws JgclIndefiniteSolution
この曲面の指定の (パラメータ的な) 矩形区間と、 他の曲面の指定の (パラメータ的な) 矩形区間におけるフィレットを求める。

フィレットが存在しない場合には長さ 0 の配列を返す。

パラメータ:
uSect1 - この曲面の U 方向のパラメータ区間
vSect1 - この曲面の V 方向のパラメータ区間
side1 - この曲面のどちら側にフィレットを求めるかを示すフラグ (JgclWhichSide.FRONTならば表側、RIGHTならば裏側、BOTHならば両側)
mate - 他の曲面
uSect2 - 他の曲面の U 方向のパラメータ区間
vSect2 - 他の曲面の V 方向のパラメータ区間
side2 - 他の曲面のどちら側にフィレットを求めるかを示すフラグ (JgclWhichSide.FRONTならば表側、RIGHTならば裏側、BOTHならば両側)
radius - フィレット半径
戻り値:
フィレットの配列
例外:
JgclIndefiniteSolution - 解不定 (ただし現状では発生しない)
関連項目:
JgclWhichSide

uIsoParametricCurve

public abstract JgclParametricCurve3D uIsoParametricCurve(double uParam)
                                                   throws JgclReducedToPoint
この曲面の U パラメータ一定の位置にある等パラメータ曲線を返す抽象メソッド。
パラメータ:
uParam - U 方向のパラメータ値
戻り値:
指定の U パラメータ値での等パラメータ曲線

vIsoParametricCurve

public abstract JgclParametricCurve3D vIsoParametricCurve(double vParam)
                                                   throws JgclReducedToPoint
この曲面の V パラメータ一定の位置にある等パラメータ曲線を返す抽象メソッド。
パラメータ:
vParam - V 方向のパラメータ値
戻り値:
指定の V パラメータ値での等パラメータ曲線

dimension

public int dimension()
この曲面の次元を返す。

常に 3 を返す。

オーバーライド:
クラス JgclGeometry 内の dimension
戻り値:
3次元なので、常に 3

is3D

public boolean is3D()
この曲面が3次元か否かを返す。

常に true を返す。

オーバーライド:
クラス JgclGeometry 内の is3D
戻り値:
3次元なので、常に true

pointToParameter

public double[] pointToParameter(JgclPoint3D pnt)
与えられた面上点の、この曲面でのパラメータ値を求める。

与えられた点がこの曲面上に乗っているものとして、 その点に対応するパラメータ値 (u, v) を求める。

このメソッドの内部処理は以下の通り。

結果として返る配列の要素数は 2 である。 配列の最初の要素は U 方向のパラメータ値、 二番目の要素は V 方向のパラメータ値を含む。

パラメータ:
pnt - 曲面上の点
戻り値:
対応するパラメータ値の配列 (u, v)
例外:
JgclInvalidArgumentValue - 与えられた点がこの曲面に乗っていない
関連項目:
nearestProjectFrom(JgclPoint3D), JgclConditionOfOperation

toNonStructuredPoints

public abstract 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 であることが期待できる。

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

doTransformBy

protected abstract 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 で変換したものを返す。

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

transformBy

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

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

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

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

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

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

transformBy

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

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

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

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

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

パラメータ:
transformationOperator - 幾何的変換演算子
transformedGeometries - 既に同様の変換を施した幾何要素を含むハッシュテーブル
戻り値:
変換後の幾何要素

reverseTransformBy

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

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

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

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

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

パラメータ:
transformationOperator - 幾何的変換演算子
transformedGeometries - 既に同様の変換を施した幾何要素を含むハッシュテーブル
戻り値:
逆変換後の幾何要素