Last updated July 30, 2009 10:39, by raindrop
IMDTransform
public interface IMDTransform {
int getDimN();
int getDimM();
IMDVector transform (IMDVector vector);
IMDTransform mul(IMDTransform transform);
float innerProduct(IMDVector vector1, IMDVector vector2);
}
IMDSquareTransform
public interface IMDSquareTransform extends IMDTransform{
int getDim();
IMDSquareTransform mul(IMDSquareTransform transform);
}
AMDTransform
public abstract class AMDTransform extends IMDTransform{
public var dimN:Integer;
public var dimM:Integer;
public override function getDimN ():Integer{ dimN }
public override function getDimM ():Integer{ dimM }
public override function innerProduct(v1:IMDVector, v2:IMDVector):Number{
var v = transform(v2);
var s = 0.0;
for(n in [0..dimN - 1]){ s += v.getElem(n) * v1.getElem(n); }
return s;
}
public override function mul(transform:IMDTransform):IMDTransform{
var T1 = transform;
var T2 = this;
AMDTransform{
dimN: T2.getDimN()
dimM: T1.getDimM();
public override function transform(vector: IMDVector):IMDVector{
T2.transform(T1.transform(vector));
}
}
}
}
AMDSquareTransform
public abstract class AMDSquareTransform extends AMDTransform, IMDSquareTransform {
public var dim: Integer;
override function getDim ():Integer { dim }
override function getDimN ():Integer { dim }
override function getDimM ():Integer { dim }
public override function mul(transform:IMDSquareTransform):IMDSquareTransform{
var T1 = transform;
var T2 = this;
AMDSquareTransform{
dim: dim
public override function transform(vector: IMDVector):IMDVector{
T2.transform(T1.transform(vector));
}
}
}
}





