|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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.JgclCurveBoundedSurface3D
3次元 : 曲線境界曲面を表すクラス。
曲線境界曲面は、ある曲面をその上の任意の閉曲線で囲まれた一部分だけを有効とした有限曲面である。 ある一部分だけを有効とすることをトリミング、 有効とする部分を示す閉曲線を境界という。
このクラスのインスタンスは、
母曲面は開いた形式であるか、もしくは 母曲面が閉じた形式の場合には 境界のそれぞれはそのプライマリな有効区間の内側に収まっているものとする。
母曲面は、曲線境界曲面ではないものとする。
曲線境界曲面では、 外周およびそれぞれの内周の進行方向に向かって左側を有効とする。
各境界は、3次元の閉じた形式の複合曲線 JgclCompositeCurve3D
の
インスタンスとして与えられるものとする。
さらに、複合曲線を構成する
各セグメント JgclCompositeCurveSegment3D
の母曲線は「面上線 JgclSurfaceCurve3D
を母曲線とする」
トリム曲線 JgclTrimmedCurve3D
であるものとする。
各境界は、互いに交わったり、自己交差したりしないものとする。
basisSurface および outerBoundary は null であってはならない。 innerBoundaries の要素の数は 0 でも構わない。
コンストラクタの概要 | |
JgclCurveBoundedSurface3D(JgclParametricSurface3D basisSurface,
JgclCompositeCurve3D outerBoundary,
java.util.Vector innerBoundaries)
母曲面、外周と内周のリストを与えてオブジェクトを構築する。 |
メソッドの概要 | |
JgclParametricSurface3D |
basisSurface()
この曲線境界曲面の母曲面を返す。 |
boolean |
contains(double uParam,
double vParam)
与えられたパラメータ値が、この曲面の境界の内側にあるか否かを返す。 |
boolean |
contains(JgclPoint2D point2D)
与えられたパラメータ値が、この曲面の境界の内側にあるか否かを返す。 |
JgclPoint3D |
coordinates(double uParam,
double vParam)
この曲面の、与えられたパラメータ値での座標値を返す。 |
protected JgclParametricSurface3D |
doTransformBy(boolean reverseTransform,
JgclCartesianTransformationOperator3D transformationOperator,
java.util.Hashtable transformedGeometries)
この曲面を、与えられた幾何的変換演算子で変換する。 |
JgclEnclosingBox2D |
enclosingBox2D()
この曲線境界曲面の境界の2次元空間での存在範囲を返す。 |
JgclSurfaceDerivative3D |
evaluation(double uParam,
double vParam)
この曲面の、与えられたパラメータ値での偏導関数を返す。 |
JgclFilletObject3D[] |
fillet(int side1,
JgclBoundedSurface3D mate,
int side2,
double radius)
この有限曲面と他の有限曲面のフィレットを求める。 |
JgclFilletObject3D[] |
fillet(JgclParameterSection uSect1,
JgclParameterSection vSect1,
int side1,
JgclParametricSurface3D mate,
JgclParameterSection uSect2,
JgclParameterSection vSect2,
int side2,
double radius)
この曲面の指定の (パラメータ的な) 矩形区間と、 他の曲面の指定の (パラメータ的な) 矩形区間におけるフィレットを求める。 |
JgclCompositeCurve3D |
innerBoundary(int i)
この曲線境界曲面の i 番目の内側の境界 (内周) を返す。 |
JgclCompositeCurve2D |
innerBoundary2D(int i)
この曲線境界曲面の i 番目の内側の境界 (内周) の2次元表現を返す。 |
JgclIntersectionPoint3D[] |
intersect(JgclParametricCurve3D mate)
この曲面と他の曲線の交点を求める。 |
JgclSurfaceSurfaceInterference3D[] |
intersect(JgclParametricSurface3D mate)
この曲面と他の曲面の交線を求める。 |
boolean |
isFreeform()
この幾何要素が自由形状か否かを返す。 |
static void |
main(java.lang.String[] args)
デバッグ用メインプログラム。 |
int |
numberOfInnerBoundaries()
この曲線境界曲面の内側の境界 (内周) の数を返す。 |
JgclBsplineSurface3D |
offsetByBsplineSurface(JgclParameterSection uPint,
JgclParameterSection vPint,
double magni,
int side,
JgclToleranceForDistance tol)
この曲面の指定の (パラメータ的な) 矩形区間をオフセットした曲面を 与えられた誤差で近似する Bspline 曲面を求める。 |
JgclCompositeCurve3D |
outerBoundary()
この曲線境界曲面の外側の境界 (外周) を返す。 |
JgclCompositeCurve2D |
outerBoundary2D()
この曲線境界曲面の外周の2次元表現を返す。 |
protected void |
output(java.io.PrintWriter writer,
int indent)
出力ストリームに形状情報を出力する。 |
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)
この曲面の指定の (パラメータ的な) 矩形区間を、与えられた誤差で平面近似する 格子点群を返す。 |
JgclMesh3D |
toMesh(JgclToleranceForDistance tol)
この (矩形のパラメータ定義域を持つ) 有限曲面全体を、与えられた誤差で平面近似する 格子点群を返す。 |
java.util.Vector |
toNonStructuredPoints(JgclParameterSection uParameterSection,
JgclParameterSection vParameterSection,
double tolerance,
double[] scalingFactor)
この曲面の指定の (パラメータ的な) 矩形区間を、 与えられた誤差で平面近似する点群を返す。 |
JgclSetOfTriangles3D |
toSetOfTriangles(double tol4S,
double tol4B)
この曲面全体を、与えられた精度で平面近似する三角形の集合を返す。 |
JgclParametricCurve3D |
uIsoParametricCurve(double parameter)
この曲面の U パラメータ一定の位置にある等パラメータ曲線を返す抽象メソッド。 |
JgclParametricCurve3D |
vIsoParametricCurve(double parameter)
この曲面の V パラメータ一定の位置にある等パラメータ曲線を返す抽象メソッド。 |
クラス jp.go.ipa.jgcl.JgclBoundedSurface3D から継承したメソッド |
offsetByBsplineSurface, toBsplineSurface |
クラス jp.go.ipa.jgcl.JgclParametricSurface3D から継承したメソッド |
curvature, dimension, 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 |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
public JgclCurveBoundedSurface3D(JgclParametricSurface3D basisSurface, JgclCompositeCurve3D outerBoundary, java.util.Vector innerBoundaries)
引数の値が [属性間の拘束条件] を満たさない場合には、 JgclInvalidArgumentValue の例外を発生する。
basisSurface
- 母曲面outerBoundary
- 外周innerBoundaries
- 内周のリストJgclInvalidArgumentValue
メソッドの詳細 |
public JgclParametricSurface3D basisSurface()
public JgclCompositeCurve3D outerBoundary()
public int numberOfInnerBoundaries()
public JgclCompositeCurve3D innerBoundary(int i)
public JgclCompositeCurve2D outerBoundary2D()
public JgclCompositeCurve2D innerBoundary2D(int i)
public JgclEnclosingBox2D enclosingBox2D()
public boolean isFreeform()
JgclGeometry
内の isFreeform
public JgclPoint3D coordinates(double uParam, double vParam)
与えられたパラメータ値が定義域を外れている場合には、 JgclParameterOutOfRange の例外を発生する。
JgclParametricSurface3D
内の coordinates
uParam
- U 方向のパラメータ値vParam
- V 方向のパラメータ値JgclParameterOutOfRange
public JgclVector3D[] tangentVector(double uParam, double vParam)
ここでの接ベクトルとは、パラメータ U/V の各々についての一次偏導関数である。
結果として返る配列の要素数は 2 である。 配列の最初の要素には U パラメータについての接ベクトル、 二番目の要素には V パラメータについての接ベクトルを含む。
与えられたパラメータ値が定義域を外れている場合には、 JgclParameterOutOfRange の例外を発生する。
JgclParametricSurface3D
内の tangentVector
uParam
- U 方向のパラメータ値vParam
- V 方向のパラメータ値JgclParameterOutOfRange
public JgclSurfaceDerivative3D evaluation(double uParam, double vParam)
与えられたパラメータ値が定義域を外れている場合には、 JgclParameterOutOfRange の例外を発生する。
JgclParametricSurface3D
内の evaluation
uParam
- U 方向のパラメータ値vParam
- V 方向のパラメータ値JgclParameterOutOfRange
public JgclPointOnSurface3D[] projectFrom(JgclPoint3D point) throws JgclIndefiniteSolution
投影点が存在しないときは長さ 0 の配列を返す。
[内部処理]
与えられた点からこの曲面の母曲面への投影点を求め、
その内でこの曲面の有効領域を外れていないものをこの曲面への投影点としている。
JgclParametricSurface3D
内の projectFrom
point
- 投影元の点JgclIndefiniteSolution
- 解が不定であるpublic JgclMesh3D toMesh(JgclToleranceForDistance tol)
結果として返される格子点群を構成する点は、 この曲面をベースとする JgclPointOnSurface3D で あることを期待できる。
曲線境界曲面のパラメータ定義域は一般に矩形ではないので、 曲面が矩形のパラメータ定義域を持つことを前提としたこのメソッドは理論的に意味を持たない。 よって、いまのところ、常に JgclImproperOperation の例外を発生する。
JgclBoundedSurface3D
内の toMesh
tol
- 距離の許容誤差JgclPointOnSurface3D
,
JgclImproperOperation
public JgclMesh3D toMesh(JgclParameterSection uPint, JgclParameterSection vPint, JgclToleranceForDistance tol)
結果として返される格子点群を構成する点は、 この曲面をベースとする JgclPointOnSurface3D で あることを期待できる。
曲線境界曲面のパラメータ定義域は一般に矩形ではないので、 曲面が矩形のパラメータ定義域を持つことを前提としたこのメソッドは理論的に意味を持たない。 よって、いまのところ、常に JgclImproperOperation の例外を発生する。
JgclParametricSurface3D
内の toMesh
uPint
- U 方向のパラメータ区間vPint
- V 方向のパラメータ区間tol
- 距離の許容誤差JgclPointOnSurface3D
,
JgclImproperOperation
public JgclBsplineSurface3D toBsplineSurface(JgclParameterSection uPint, JgclParameterSection vPint)
曲線境界曲面のパラメータ定義域は一般に矩形ではないので、 曲面が矩形のパラメータ定義域を持つことを前提としたこのメソッドは理論的に意味を持たない。 よって、いまのところ、常に JgclImproperOperation の例外を発生する。
JgclParametricSurface3D
内の toBsplineSurface
uPint
- U 方向のパラメータ区間vPint
- V 方向のパラメータ区間JgclImproperOperation
public JgclIntersectionPoint3D[] intersect(JgclParametricCurve3D mate) throws JgclIndefiniteSolution
交点が存在しないときは長さ 0 の配列を返す。
[内部処理]
この曲面の母曲面と他の曲線との交点を求め、
その内でこの曲面の有効領域を外れていないものをこの曲面と他の曲線の交点としている。
JgclParametricSurface3D
内の intersect
mate
- 他の曲線JgclIndefiniteSolution
- 解が不定であるpublic JgclSurfaceSurfaceInterference3D[] intersect(JgclParametricSurface3D mate) throws JgclIndefiniteSolution
交線が存在しないときは長さ 0 の配列を返す。
二曲面が交差する箇所については、交線 (JgclIntersectionCurve3D) が返る。
二曲面が接する箇所については、交点 (JgclIntersectionPoint3D) が返ることがある。
JgclParametricSurface3D
内の intersect
mate
- 他の曲面JgclIndefiniteSolution
- 解が不定であるJgclIntersectionCurve3D
,
JgclIntersectionPoint3D
public JgclBsplineSurface3D offsetByBsplineSurface(JgclParameterSection uPint, JgclParameterSection vPint, double magni, int side, JgclToleranceForDistance tol)
曲線境界曲面のパラメータ定義域は一般に矩形ではないので、 曲面が矩形のパラメータ定義域を持つことを前提としたこのメソッドは理論的に意味を持たない。 よって、いまのところ、常に JgclImproperOperation の例外を発生する。
JgclParametricSurface3D
内の offsetByBsplineSurface
uPint
- U 方向のパラメータ区間vPint
- V 方向のパラメータ区間magni
- オフセット量side
- オフセットの向き (JgclWhichSide.FRONT/BACK)tol
- 距離の許容誤差JgclWhichSide
,
JgclImproperOperation
public JgclFilletObject3D[] fillet(int side1, JgclBoundedSurface3D mate, int side2, double radius) throws JgclIndefiniteSolution
フィレットが存在しない場合には長さ 0 の配列を返す。
JgclBoundedSurface3D
内の fillet
side1
- この曲面のどちら側にフィレットを求めるかを示すフラグ
(JgclWhichSide.FRONTならば表側、RIGHTならば裏側、BOTHならば両側)mate
- 他の曲面side2
- 他の曲面のどちら側にフィレットを求めるかを示すフラグ
(JgclWhichSide.FRONTならば表側、RIGHTならば裏側、BOTHならば両側)radius
- フィレット半径JgclIndefiniteSolution
- 解不定 (ただし現状では発生しない)JgclWhichSide
public JgclFilletObject3D[] fillet(JgclParameterSection uSect1, JgclParameterSection vSect1, int side1, JgclParametricSurface3D mate, JgclParameterSection uSect2, JgclParameterSection vSect2, int side2, double radius) throws JgclIndefiniteSolution
フィレットが存在しない場合には長さ 0 の配列を返す。
曲線境界曲面のパラメータ定義域は一般に矩形ではないので、 曲面が矩形のパラメータ定義域を持つことを前提としたこのメソッドは理論的に意味を持たない。 よって、いまのところ、常に JgclImproperOperation の例外を発生する。
JgclParametricSurface3D
内の fillet
uSect1
- この曲面の U 方向のパラメータ区間vSect1
- この曲面の V 方向のパラメータ区間side1
- この曲面のどちら側にフィレットを求めるかを示すフラグ
(JgclWhichSide.FRONTならば表側、RIGHTならば裏側、BOTHならば両側)mate
- 他の曲面uSect2
- 他の曲面の U 方向のパラメータ区間vSect2
- 他の曲面の V 方向のパラメータ区間side2
- 他の曲面のどちら側にフィレットを求めるかを示すフラグ
(JgclWhichSide.FRONTならば表側、RIGHTならば裏側、BOTHならば両側)radius
- フィレット半径JgclIndefiniteSolution
- 解不定 (ただし現状では発生しない)JgclWhichSide
,
JgclImproperOperation
public JgclParametricCurve3D uIsoParametricCurve(double parameter)
JgclParametricSurface3D
の記述: JgclParametricSurface3D
内の uIsoParametricCurve
jp.go.ipa.jgcl.JgclParametricSurface3D
からコピーされたタグ:uParam
- U 方向のパラメータ値public JgclParametricCurve3D vIsoParametricCurve(double parameter)
JgclParametricSurface3D
の記述: JgclParametricSurface3D
内の vIsoParametricCurve
jp.go.ipa.jgcl.JgclParametricSurface3D
からコピーされたタグ:vParam
- V 方向のパラメータ値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、そうでなければ falsetransformationOperator
- 幾何的変換演算子transformedGeometries
- 既に同様の変換を施した幾何要素を含むハッシュテーブルprotected void output(java.io.PrintWriter writer, int indent)
JgclGeometry
内の output
writer
- PrintWriterindent
- インデントの深さ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 であることが期待できる。
いまのところ、この機能は実装されていないため、常に JgclNotSupported の例外を発生する。
JgclParametricSurface3D
内の toNonStructuredPoints
uParameterSection
- U 方向のパラメータ区間vParameterSection
- V 方向のパラメータ区間tolerance
- 距離の許容誤差scalingFactor
- 点群を三角形分割する際に有用と思われる U/V の縮尺倍率JgclPointOnSurface3D
,
JgclNotSupported
public boolean contains(double uParam, double vParam)
与えられたパラメータ値が境界上にある場合には「内側」と判断する。
uParam
- U 方向のパラメータ値vParam
- V 方向のパラメータ値public boolean contains(JgclPoint2D point2D)
point2D が境界上にある場合には「内側」と判断する。
point2D
- (u, v) パラメータ値public JgclSetOfTriangles3D toSetOfTriangles(double tol4S, double tol4B)
tol4S
- 曲面部分の精度tol4B
- 境界部分の精度 (2次元パラメータ空間上での値)public static void main(java.lang.String[] args)
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |