public Point projectPoint(Point point, Point normal, double d)
        {
            double t = (point.dotProduct(normal) - d) / normal.dotProduct(normal);

            Point result = point.subtract(normal.multiply(t));

            return result;
        }
        public void pointSubstractTest()
        {
            double a1 = 4.0;
            double a2 = 3.5;

            double b1 = 2.0;
            double b2 = 4.0;

            Point a = new Point(2);

            a.p[0] = a1;
            a.p[1] = a2;

            Point b = new Point(2);
            b.p[0] = b1;
            b.p[1] = b2;

            Point result = a.subtract(b);

            Assert.AreEqual(a1 - b1, result.p[0]);
            Assert.AreEqual(a2 - b2, result.p[1]);
        }
        public List<Point> prepareVectors(Point p)
        {
            List<Point> pointList = new List<Point>();

            for (int i = 0; i < p.Dimensions-1; i++)
            {
              pointList.Add(generator.generatePoint(p.Dimensions));
            }

            for (int i =0; i< pointList.Count;i++)
            {
                Point point = pointList.ElementAt(i);
                pointList[i] = p.subtract(point);
            }

            return pointList;
        }