jp.go.ipa.jgcl
クラス JgclPlane3D

java.lang.Object
  |
  +--jp.go.ipa.jgcl.JgclGeometry
        |
        +--jp.go.ipa.jgcl.JgclParametricSurface
              |
              +--jp.go.ipa.jgcl.JgclParametricSurface3D
                    |
                    +--jp.go.ipa.jgcl.JgclElementarySurface3D
                          |
                          +--jp.go.ipa.jgcl.JgclPlane3D
すべての実装インタフェース:
java.io.Serializable

public class JgclPlane3D
extends JgclElementarySurface3D

3次元 : 平面を表すクラス。

このクラスに特有な属性を表すフィールドは特にない。 平面の局所的な原点と各軸の方向を示す配置情報 (局所座標系) は、 スーパークラス の position で保持される。

平面のパラメータ定義域は U/V 両方向ともに、無限で非周期的である。

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

	P(u, v) = c + u * x + v * y
 
ここで、c, x, y はそれぞれ
	c : position.location()
	x : position.x()
	y : position.y()
 
を表す。

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

コンストラクタの概要
JgclPlane3D(JgclAxis2Placement3D position)
          局所座標系を指定してオブジェクトを構築する。
JgclPlane3D(JgclPoint3D pnt, JgclVector3D normal)
          局所原点と法線ベクトルを与えてオブジェクトを構築する。
 
メソッドの概要
 JgclPoint3D coordinates(double uParam, double vParam)
          この曲面の、与えられたパラメータ値での座標値を返す。
static JgclVector3D coplaner(JgclPoint3D[] points)
          与えられた点群が同一平面上にあるか (共面をなすか) どうかを調べる。
 JgclSurfaceCurvature3D curvature(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)
          この曲面と他の曲面の交線を求める。
 JgclIntersectionPoint3D intersect1(JgclLine3D mate)
          この平面と与えられた直線の (ただ一つだけの) 交点を求める mate を this の局所座標系での表現に変換したものを M として、 現在設定されている演算条件の下で、 M の方向ベクトルを単位化したベクトルの Z 成分の絶対値が 距離の許容誤差よりも小さければ、 両者は交わらないものとして null を返す。
 JgclLine3D intersect1Plane(JgclPlane3D mate)
          この平面と他の平面のただ一つだけの交線を直線として求める。
 JgclVector3D normalVector(double uParam, double vParam)
          この曲面の、与えられたパラメータ値での法線ベクトルを返す。
 JgclBsplineSurface3D offsetByBsplineSurface(JgclParameterSection uPint, JgclParameterSection vPint, double magni, int side, JgclToleranceForDistance tol)
          この曲面の指定の (パラメータ的な) 矩形区間をオフセットした曲面を 与えられた誤差で近似する Bspline 曲面を求める。
protected  void output(java.io.PrintWriter writer, int indent)
          出力ストリームに形状情報を出力する。
 JgclPointOnSurface3D project1From(JgclPoint3D point)
          与えられた点からこの曲面への (一つだけ存在する) 投影点を求める。
 JgclPointOnSurface3D[] projectFrom(JgclPoint3D point)
          与えられた点からこの曲面への投影点を求める。
 JgclVector3D[] tangentVector(double uParam, double vParam)
          この曲面の、与えられたパラメータ値での接ベクトルを返す。
 JgclBsplineSurface3D toBsplineSurface(JgclParameterSection uPint, JgclParameterSection vPint)
          この曲面の指定の (パラメータ的な) 矩形区間を厳密に再現する有理 Bspline 曲面を返す。
 JgclMesh3D toMesh(JgclParameterSection uPint, JgclParameterSection vPint, JgclToleranceForDistance tol)
          この曲面の指定の (パラメータ的な) 矩形区間を、 与えられた誤差で平面近似する格子点群を返す。
 java.util.Vector toNonStructuredPoints(JgclParameterSection uParameterSection, JgclParameterSection vParameterSection, double tolerance, double[] scalingFactor)
          この曲面の指定の (パラメータ的な) 矩形区間を、 与えられた誤差で平面近似する点群を返す。
 JgclParametricCurve3D uIsoParametricCurve(double uParam)
          この曲面の U パラメータ一定の位置にある等パラメータ曲線を返す抽象メソッド。
 JgclParametricCurve3D vIsoParametricCurve(double vParam)
          この曲面の V パラメータ一定の位置にある等パラメータ曲線を返す抽象メソッド。
 
クラス jp.go.ipa.jgcl.JgclElementarySurface3D から継承したメソッド
position, toGlobal
 
クラス jp.go.ipa.jgcl.JgclParametricSurface3D から継承したメソッド
dimension, fillet, is3D, nearestProjectFrom, nearestProjectWithDistanceFrom, 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, isFreeform, isPlacement, isPoint, isTransformationOperator, isVector, makeIndent, output
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

JgclPlane3D

public JgclPlane3D(JgclAxis2Placement3D position)
局所座標系を指定してオブジェクトを構築する。

position が null の場合には、 JgclInvalidArgumentValue の例外を発生する。

パラメータ:
position - 局所原点と各軸の方向を示す局所座標系
関連項目:
JgclInvalidArgumentValue

JgclPlane3D

public JgclPlane3D(JgclPoint3D pnt,
                   JgclVector3D normal)
局所原点と法線ベクトルを与えてオブジェクトを構築する。

構築される平面の局所 X/Y 軸の方向は、 このコンストラクタの内部で決定する。

パラメータ:
pnt - 局所原点の座標値
normal - 法線ベクトル
メソッドの詳細

coordinates

public JgclPoint3D coordinates(double uParam,
                               double vParam)
この曲面の、与えられたパラメータ値での座標値を返す。
オーバーライド:
クラス JgclParametricSurface3D 内の coordinates
パラメータ:
uParam - U 方向パラメータ値
vParam - V 方向パラメータ値
戻り値:
座標値

tangentVector

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

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

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

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

normalVector

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

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

オーバーライド:
クラス JgclParametricSurface3D 内の normalVector
パラメータ:
uParam - U 方向のパラメータ値
vParam - V 方向のパラメータ値
戻り値:
正規化された法線ベクトル

curvature

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

二つの主曲率 (principalCurvature1, principalCurvature2) の値はどちらも 0 である。 主方向ベクトル1 (principalDirection1) には局所 X 軸方向の単位ベクトル、 主方向ベクトル2 (principalDirection2) には局所 Y 軸方向の単位ベクトル を返す。

オーバーライド:
クラス JgclParametricSurface3D 内の curvature
パラメータ:
uParam - U 方向のパラメータ値
vParam - V 方向のパラメータ値
戻り値:
主曲率情報

evaluation

public JgclSurfaceDerivative3D evaluation(double uParam,
                                          double vParam)
この曲面の、与えられたパラメータ値での偏導関数を返す。
オーバーライド:
クラス JgclParametricSurface3D 内の evaluation
パラメータ:
uParam - U 方向のパラメータ値
vParam - V 方向のパラメータ値
戻り値:
偏導関数

project1From

public JgclPointOnSurface3D project1From(JgclPoint3D point)
与えられた点からこの曲面への (一つだけ存在する) 投影点を求める。

[内部処理]
与えられた点について、この平面の局所座標系における座標値を求め、 その x, y 成分をパラメータ値 (uParameter, vParameter) とする面上点を「投影点」としている。

パラメータ:
point - 投影元の点
戻り値:
投影点
関連項目:
projectFrom(JgclPoint3D)

projectFrom

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

ある平面への任意の点からの投影点の数は必ず 1 になる。

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

toMesh

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

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

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

toBsplineSurface

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

intersect

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

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

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

intersect1

public JgclIntersectionPoint3D intersect1(JgclLine3D mate)
                                   throws JgclIndefiniteSolution
この平面と与えられた直線の (ただ一つだけの) 交点を求める

mate を this の局所座標系での表現に変換したものを M として、 現在設定されている演算条件の下で、 M の方向ベクトルを単位化したベクトルの Z 成分の絶対値が 距離の許容誤差よりも小さければ、 両者は交わらないものとして null を返す。
ただし、この場合にさらに M のパラメータ値 0 の点の Z 成分の絶対値が 距離の許容誤差よりも小さければ、 mate は this に乗っているものとして JgclIndefiniteSolution の例外を発生する。

パラメータ:
mate - 直線
戻り値:
交点
例外:
JgclIndefiniteSolution - mate が this に乗っており、解が不定である

intersect

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

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

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

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

オーバーライド:
クラス JgclParametricSurface3D 内の intersect
パラメータ:
mate - 他の曲面
戻り値:
交線 (または交点) の配列
例外:
JgclIndefiniteSolution - mate も平面で、両者がオーバーラップしており、解が不定である
関連項目:
JgclIntersectionCurve3D, JgclIntersectionPoint3D

intersect1Plane

public JgclLine3D intersect1Plane(JgclPlane3D mate)
                           throws JgclIndefiniteSolution
この平面と他の平面のただ一つだけの交線を直線として求める。

現在設定されている演算条件の下で、 this と mate の法線ベクトルのなす角度が 角度の許容誤差よりも小さい場合には 両者は交わらないものとして null を返す。
ただし、この場合にさらに 一方の平面の局所原点から他方の平面への距離が 距離の許容誤差よりも小さい場合には 両者はオーバーラップしているものとして JgclIndefiniteSolution の例外を発生する。

パラメータ:
mate - 他の平面
戻り値:
交線を表す直線
例外:
JgclIndefiniteSolution - this と mate がオーバーラップしており、解が不定である

offsetByBsplineSurface

public JgclBsplineSurface3D offsetByBsplineSurface(JgclParameterSection uPint,
                                                   JgclParameterSection vPint,
                                                   double magni,
                                                   int side,
                                                   JgclToleranceForDistance tol)
この曲面の指定の (パラメータ的な) 矩形区間をオフセットした曲面を 与えられた誤差で近似する Bspline 曲面を求める。

このメソッドが返すBスプライン曲面は、 平面をオフセットした曲面を常に厳密に再現する。 よって、このメソッドでは tol の値は参照しない。

オーバーライド:
クラス 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 パラメータ値での等パラメータ曲線

coplaner

public static JgclVector3D coplaner(JgclPoint3D[] points)
与えられた点群が同一平面上にあるか (共面をなすか) どうかを調べる。

与えられた点の配列の要素数が 2 以下の場合にはゼロベクトルを返す。

与えられた点群が一点に縮退しているか、あるいは共線状態にある場合にも ゼロベクトルを返す。

与えられた点群が共面状態にない場合には null を返す。

パラメータ:
points - 点群
戻り値:
点群の乗っている平面の単位法線ベクトル

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