AffineTrans、Vector3D クラスの JSCL1.1 との相違点


AffineTransVector3D を継承したクラスで、 パブリックなフィールドをオーバーライドした場合に限り、 AffineTrans、Vector3D のメソッドの動作が以前のバージョンと異なる部分があります。

1. Vector3D

Vector3D は、x, y, z のパブリックなフィールドを持ちます。
これを継承したクラス Vector3DEX を作成し、x, y, z をオーバーライドした場合を考えます。


class Vector3DEX extends Vector3D {
    public int x, y, z;
}

このクラスに対して実行したメソッドが扱うフィールドは以下のようになります。

表1. Vector3D の各メソッドの以前のバージョンとの動作の差異
メソッドJSCL1.2JSCL1.1
getX(), getY(), getZ(),
set(int, int, int),
setX(int), setY(int), setZ(int)
Vector3D#x, y, zVector3D#x, y, z
innerProduct(Vector3D),
innerProduct(Vector3D, Vector3D),
outerProduct(Vector3D),
outerProduct(Vector3D, Vector3D),
unit()
Vector3D#x, y, zVector3DEX#x, y, z

2. AffineTrans

AffineTrans は、 m00 〜 m23 のパブリックなフィールドを持ちます。
これを継承したクラス AffineTransEX を作成し、 m00 〜 m23 をオーバーライドした場合を考えます。


class AffineTransEX extends AffineTrans {
    public int m00, m01, m02, m03;
    public int m10, m11, m12, m13;
    public int m20, m21, m22, m23;
}

このクラスに対して実行したメソッドが扱うフィールドは以下のようになります。

表2. AffineTrans の各メソッドの以前のバージョンとの動作の差異
メソッドJSCL1.2JSCL1.1
multiply(AffineTrans),
multiply(AffineTrans, AffineTrans),
rotationV(Vector3D, int),
rotationX(int),
rotationY(int),
rotationZ(int),
setViewTrans(Vector3D, Vector3D, Vector3D),
transPoint(Vector3D)
AffineTrans#m00 〜 m23AffineTransEX#m00 〜 m23
set(int[][]) AffineTrans#m00 〜 m23AffineTrans#m00 〜 m23