//train point in certain viewport (generate training set and train neural network)
        private void trainPoint(BaseTypes.viewport vprt,Bitmap bmp, ref NeuralNetwork Ann, int hls, int ovs, int hlc, iActivationFunction af, double tr, int tic, int miw, int maw)
        {
            trainingSet=new ArrayList();

            switch (vprt)
            {

                case BaseTypes.viewport.XY:
                {
                    trainingSet=(ArrayList)(generateTrainingSet(BaseTypes.viewport.XY,bmp).Clone());
                    //create new neural network object
                    Ann =  new NeuralNetwork((int)Math.Pow((xyRadius*2),2),hls, ovs,hlc,af);
                    //initialize weights
                    Ann.DrawWeights(miw, maw);
                    //train network
                    trainNetwork(trainingSet,ref Ann,tr,tic);
                    break;
                }
                case BaseTypes.viewport.XZ:
                {
                    trainingSet=(ArrayList)(generateTrainingSet(BaseTypes.viewport.XZ,bmp).Clone());
                    //create new neural network object
                    Ann =  new NeuralNetwork((int)Math.Pow((xzRadius*2),2),hls, ovs,hlc,af);
                    //initialize weights
                    Ann.DrawWeights(miw, maw);
                    //train network
                    trainNetwork(trainingSet,ref Ann,tr,tic);
                    break;
                }
                case BaseTypes.viewport.YZ:
                {
                    trainingSet=(ArrayList)(generateTrainingSet(BaseTypes.viewport.YZ,bmp).Clone());
                    //create new neural network object
                    Ann =  new NeuralNetwork((int)Math.Pow((yzRadius*2),2),hls, ovs,hlc,af);
                    //initialize weights
                    Ann.DrawWeights(miw, maw);
                    //train network
                    trainNetwork(trainingSet,ref Ann,tr,tic);
                    break;
                }
            }
        }