AffineTrans
、
Vector3D
を継承したクラスで、
パブリックなフィールドをオーバーライドした場合に限り、
AffineTrans、Vector3D
のメソッドの動作が以前のバージョンと異なる部分があります。
1. Vector3D
Vector3D
は、x, y, z
のパブリックなフィールドを持ちます。
これを継承したクラス Vector3DEX
を作成し、x, y, z
をオーバーライドした場合を考えます。
class Vector3DEX extends Vector3D {
public int x, y, z;
}
このクラスに対して実行したメソッドが扱うフィールドは以下のようになります。
表1. Vector3D の各メソッドの以前のバージョンとの動作の差異
メソッド JSCL1.2 JSCL1.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, z
Vector3DEX#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.2 JSCL1.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 〜 m23
AffineTrans#m00 〜 m23