public void NormalizeTest()
{
PointH[] points = new PointH[]
{
new PointH(1, 2),
new PointH(5, 2),
new PointH(12, 2),
new PointH(1, 2),
new PointH(10, 2),
};
MatrixH T;
PointH[] actual = Tools.Normalize(points, out T);
// Centroids should be at the origin
double cx = 0, cy = 0;
for (int i = 0; i < actual.Length; i++)
{
cx += actual[i].X / actual[i].W;
cy += actual[i].Y / actual[i].W;
}
Assert.AreEqual(cx / actual.Length, 0, 0.0000001);
Assert.AreEqual(cy / actual.Length, 0, 0.0000001);
// Average distance from the origin should be sqrt(2)
double d = 0;
for (int i = 0; i < actual.Length; i++)
{
double x = actual[i].X / actual[i].W;
double y = actual[i].Y / actual[i].W;
d += System.Math.Sqrt(x * x + y * y);
}
Assert.AreEqual(d / actual.Length, System.Math.Sqrt(2), 0.00001);
}