jp.go.ipa.jgcl
クラス JgclVector3D

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

public abstract class JgclVector3D
extends JgclVector

3次元のベクトルを表す抽象クラス。

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

フィールドの概要
static JgclVector3D xUnitVector
          3次元のグローバルな直交座標系の X 軸方向の単位ベクトル。
static JgclVector3D yUnitVector
          3次元のグローバルな直交座標系の Y 軸方向の単位ベクトル。
static JgclVector3D zeroVector
          3次元のゼロベクトル。
static JgclVector3D zUnitVector
          3次元のグローバルな直交座標系の Z 軸方向の単位ベクトル。
 
コンストラクタの概要
protected JgclVector3D()
          オブジェクトを構築する。
protected JgclVector3D(boolean confirmedAsUnitized)
          オブジェクトを構築する。
 
メソッドの概要
 JgclVector3D add(JgclVector3D mate)
          ベクトル同士の和を返す。
 double angleWith(JgclVector3D mate, JgclVector3D norm)
          他のベクトルとの角度 (ラジアン) を求める。
 JgclVector3D crossProduct(JgclVector3D mate)
          外積を返す。
 int dimension()
          次元を返す。
 JgclVector3D divide(double scale)
          与えられたスケールで割ったベクトルを返す。
 double dotProduct(JgclVector3D mate)
          内積を返す。
protected abstract  JgclVector3D doTransformBy(boolean reverseTransform, JgclCartesianTransformationOperator3D transformationOperator, java.util.Hashtable transformedGeometries)
          このベクトルを、与えられた幾何的変換演算子で変換する。
 boolean identical(JgclVector3D mate)
          二ベクトルの同一性を判定する。
 boolean identicalDirection(JgclVector3D mate)
          二ベクトルの同一方向性を判定する。
 boolean is3D()
          3次元か否かを返す。
 JgclVector3D multiply(double scale)
          与えられたスケールを乗じたベクトルを返す。
 double norm()
          ベクトルのノルムを返す。
static JgclLiteralVector3D of(double[] components)
          JgclLiteralVector3D のインスタンスを生成する。
static JgclLiteralVector3D of(double x, double y, double z)
          JgclLiteralVector3D のインスタンスを生成する。
 boolean parallelDirection(JgclVector3D mate)
          二ベクトルの同一方向性を判定する。
 JgclVector3D project(JgclVector3D dNorm)
          ベクトルを平面に投影する。
 JgclVector3D reverse()
          各成分の符号を反転させたベクトルを返す。
 JgclVector3D reverseTransformBy(JgclCartesianTransformationOperator3D transformationOperator, java.util.Hashtable transformedGeometries)
          このベクトルを、与えられた幾何的変換演算子で逆変換する。
 JgclVector3D subtract(JgclVector3D mate)
          ベクトル同士の差を返す。
 double[] toDoubleArray()
          doubleの配列に変換する。
 JgclPoint3D toPoint3D()
          3次元の点 (JgclPoint3D) に変換する。
static JgclPoint3D[] toPoint3D(JgclVector3D[] vecs)
          ベクトルの配列を3次元の点 (JgclPoint3D) の配列に変換する。
 JgclVector3D transformBy(boolean reverseTransform, JgclCartesianTransformationOperator3D transformationOperator, java.util.Hashtable transformedGeometries)
          このベクトルを、与えられた幾何的変換演算子で変換する。
 JgclVector3D transformBy(JgclCartesianTransformationOperator3D transformationOperator, java.util.Hashtable transformedGeometries)
          このベクトルを、与えられた幾何的変換演算子で変換する。
 JgclVector3D unitized()
          単位化したベクトルを返す。
 JgclVector3D verticalVector()
          自分に垂直なベクトルを勝手に選んで返す。
abstract  double x()
          ベクトルの X 成分を返す抽象メソッド。
static JgclVector3D xUnitVector()
          3次元のグローバルな直交座標系の X 軸方向の単位ベクトルを返す。
abstract  double y()
          ベクトルの Y 成分を返す抽象メソッド。
static JgclVector3D yUnitVector()
          3次元のグローバルな直交座標系の Y 軸方向の単位ベクトルを返す。
abstract  double z()
          ベクトルの Z 成分を返す抽象メソッド。
static JgclVector3D zeroVector()
          3次元のゼロベクトルを返す。
static JgclVector3D zUnitVector()
          3次元のグローバルな直交座標系の Z 軸方向の単位ベクトルを返す。
 
クラス jp.go.ipa.jgcl.JgclVector から継承したメソッド
isVector, length, magnitude
 
クラス jp.go.ipa.jgcl.JgclGeometry から継承したメソッド
getClassName, getToleranceForAngle, getToleranceForAngleAsObject, getToleranceForDistance, getToleranceForDistance2, getToleranceForDistanceAsObject, getToleranceForParameter, getToleranceForParameterAsObject, getToleranceForRealNumber, getToleranceForRealNumberAsObject, is1D, is2D, isCurve, isFreeform, isParametric, isPlacement, isPoint, isSurface, isTransformationOperator, makeIndent, output, output
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

zeroVector

public static final JgclVector3D zeroVector
3次元のゼロベクトル。

xUnitVector

public static final JgclVector3D xUnitVector
3次元のグローバルな直交座標系の X 軸方向の単位ベクトル。

yUnitVector

public static final JgclVector3D yUnitVector
3次元のグローバルな直交座標系の Y 軸方向の単位ベクトル。

zUnitVector

public static final JgclVector3D zUnitVector
3次元のグローバルな直交座標系の Z 軸方向の単位ベクトル。
コンストラクタの詳細

JgclVector3D

protected JgclVector3D()
オブジェクトを構築する。

生成しようとするベクトルが 単位ベクトルであるかどうか分からない場合、もしくは 単位ベクトルでないことが保証されている場合には、 このコンストラクタを使用する。


JgclVector3D

protected JgclVector3D(boolean confirmedAsUnitized)
オブジェクトを構築する。

生成しようとするベクトルが 単位ベクトルであるかどうか分かる場合には、 このコンストラクタを使用する。

パラメータ:
confirmedAsUnitized - 生成しようとするベクトルが 単位ベクトルであるならば true、 さもなくば false
メソッドの詳細

zeroVector

public static JgclVector3D zeroVector()
3次元のゼロベクトルを返す。
戻り値:
3次元のゼロベクトル

xUnitVector

public static JgclVector3D xUnitVector()
3次元のグローバルな直交座標系の X 軸方向の単位ベクトルを返す。
戻り値:
3次元のグローバルな直交座標系の X 軸方向の単位ベクトル

yUnitVector

public static JgclVector3D yUnitVector()
3次元のグローバルな直交座標系の Y 軸方向の単位ベクトルを返す。
戻り値:
3次元のグローバルな直交座標系の Y 軸方向の単位ベクトル

zUnitVector

public static JgclVector3D zUnitVector()
3次元のグローバルな直交座標系の Z 軸方向の単位ベクトルを返す。
戻り値:
3次元のグローバルな直交座標系の Z 軸方向の単位ベクトル

dimension

public int dimension()
次元を返す。

常に 3 を返す。

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

is3D

public boolean is3D()
3次元か否かを返す。

常に true を返す。

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

x

public abstract double x()
ベクトルの X 成分を返す抽象メソッド。
戻り値:
ベクトルの X 成分

y

public abstract double y()
ベクトルの Y 成分を返す抽象メソッド。
戻り値:
ベクトルの Y 成分

z

public abstract double z()
ベクトルの Z 成分を返す抽象メソッド。
戻り値:
ベクトルの Z 成分

unitized

public JgclVector3D unitized()
単位化したベクトルを返す。

長さを持たないベクトルに対してこのメソッドを呼んだ場合、 現実装ではゼロベクトルを返すようになっている。 しかし、本来は例外 JgclZeroLength を投げるべきである。

戻り値:
単位化したベクトル

reverse

public JgclVector3D reverse()
各成分の符号を反転させたベクトルを返す。
戻り値:
this を反転したベクトル

verticalVector

public JgclVector3D verticalVector()
自分に垂直なベクトルを勝手に選んで返す。
戻り値:
this に垂直なベクトル

dotProduct

public double dotProduct(JgclVector3D mate)
内積を返す。
パラメータ:
mate - 内積を取る相手のベクトル
戻り値:
内積

crossProduct

public JgclVector3D crossProduct(JgclVector3D mate)
外積を返す。
パラメータ:
mate - 外積を取る相手のベクトル
戻り値:
mate との外積

add

public JgclVector3D add(JgclVector3D mate)
ベクトル同士の和を返す。
パラメータ:
mate - 和を取る相手のベクトル
戻り値:
ベクトルの和 (this + mate)

subtract

public JgclVector3D subtract(JgclVector3D mate)
ベクトル同士の差を返す。
パラメータ:
mate - 差を取る相手のベクトル
戻り値:
ベクトルの差 (this - mate)

multiply

public JgclVector3D multiply(double scale)
与えられたスケールを乗じたベクトルを返す。
パラメータ:
scale - スケール
戻り値:
(this * scale)

divide

public JgclVector3D divide(double scale)
与えられたスケールで割ったベクトルを返す。
パラメータ:
scale - スケール
戻り値:
(this / scale)

identical

public boolean identical(JgclVector3D mate)
二ベクトルの同一性を判定する。

二つのベクトルの差の大きさが、 現在設定されている演算条件の「距離の許容誤差」より小さければ、 二つのベクトルは同一であるものと判断する。

パラメータ:
mate - 判定の対象となるベクトル
戻り値:
二つのベクトルが同一のベクトルであるとみなせれば true、さもなくば false
関連項目:
JgclConditionOfOperation, identicalDirection(JgclVector3D)

identicalDirection

public boolean identicalDirection(JgclVector3D mate)
二ベクトルの同一方向性を判定する。

二つのベクトルのなす角度が、 現在設定されている演算条件の「角度の許容誤差」より小さければ、 二つのベクトルは同一方向であるものと判断する。

なお、反転状態は同一とみなさない。

パラメータ:
mate - 判定の対象となるベクトル
戻り値:
二つのベクトルが同一方向のベクトルとみなせれば true、さもなくば false
関連項目:
JgclConditionOfOperation, identical(JgclVector3D), parallelDirection(JgclVector3D)

parallelDirection

public boolean parallelDirection(JgclVector3D mate)
二ベクトルの同一方向性を判定する。

二つのベクトルのなす角度が、 現在設定されている演算条件の「角度の許容誤差」より小さければ、 二つのベクトルは同一方向であるものと判断する。

なお、反転状態も同一とみなす。

パラメータ:
mate - 判定の対象となるベクトル
戻り値:
二つのベクトルが同一方向のベクトルとみなせれば true、さもなくば false
関連項目:
JgclConditionOfOperation, identicalDirection(JgclVector3D)

norm

public double norm()
ベクトルのノルムを返す。
オーバーライド:
クラス JgclVector 内の norm
戻り値:
ベクトルのノルム (x^2) + (y^2) + (z^2)

project

public JgclVector3D project(JgclVector3D dNorm)
ベクトルを平面に投影する。
パラメータ:
dNorm - 平面の法線ベクトル
戻り値:
平面上に投影されたベクトル

toPoint3D

public JgclPoint3D toPoint3D()
3次元の点 (JgclPoint3D) に変換する。
戻り値:
原点からの位置ベクトルとみなした点

toPoint3D

public static JgclPoint3D[] toPoint3D(JgclVector3D[] vecs)
ベクトルの配列を3次元の点 (JgclPoint3D) の配列に変換する。
戻り値:
原点からの位置ベクトルとみなした点の配列

toDoubleArray

public double[] toDoubleArray()
doubleの配列に変換する。
戻り値:
座標値を代入したdoubleの配列

angleWith

public double angleWith(JgclVector3D mate,
                        JgclVector3D norm)
他のベクトルとの角度 (ラジアン) を求める。

this から mate への左回りの角度 (0 〜 2pi)
ここでの左回りとは、norm が向かっている方向から見たときの左回り

パラメータ:
mate - 相手のベクトル
norm - 「左回り」を決める基準となるベクトル
戻り値:
相手のベクトルとの角度

doTransformBy

protected abstract JgclVector3D 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 JgclVector3D 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 JgclVector3D 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 JgclVector3D reverseTransformBy(JgclCartesianTransformationOperator3D transformationOperator,
                                       java.util.Hashtable transformedGeometries)
このベクトルを、与えられた幾何的変換演算子で逆変換する。

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

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

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

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

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

of

public static JgclLiteralVector3D of(double x,
                                     double y,
                                     double z)
JgclLiteralVector3D のインスタンスを生成する。
パラメータ:
x - X 成分
y - Y 成分
z - Z 成分
戻り値:
JgclLiteralVector3D のインスタンス

of

public static JgclLiteralVector3D of(double[] components)
JgclLiteralVector3D のインスタンスを生成する。
パラメータ:
components - X, Y成分の配列 (要素数 3)
戻り値:
JgclLiteralVector3D のインスタンス