public static Bitmap MapToBitmapWithLeastCost(Map mapWithheightValues, bool costMap)
        {
            Bitmap bmp = new Bitmap(mapWithheightValues.dimensions[0], mapWithheightValues.dimensions[1]);

            if (costMap)
            {
                RasterFunctions.generateCostMap(bmp, mapWithheightValues);
            }
            else
            {
                for (int y = 0; y < mapWithheightValues.dimensions[0]; y++)
                {
                    for (int x = 0; x < mapWithheightValues.dimensions[1]; x++)
                    {
                        // We find the node that have these coordinates in the list of all the nodes of the map
                        int height = mapWithheightValues.tableOfNodes[x, y].height;
                        RasterFunctions.chooseColorOfPixel(bmp, x, y, height);
                    }
                }
            }



            // we display the departure node and the surroundings in blue
            for (int x = -5; x < 6; x++)
            {
                for (int y = -5; y < 6; y++)
                {
                    if (mapWithheightValues.departureNode.coordinates[0] + x >= 0 && (mapWithheightValues.departureNode.coordinates[0] + x <= (mapWithheightValues.dimensions[0] - 1)) && mapWithheightValues.departureNode.coordinates[1] + y >= 0 && mapWithheightValues.departureNode.coordinates[1] + y <= mapWithheightValues.dimensions[1] - 1)
                    {
                        bmp.SetPixel(mapWithheightValues.departureNode.coordinates[0] + x, mapWithheightValues.departureNode.coordinates[1] + y, Color.FromArgb((int)0, (int)77, (int)255));
                    }
                }
            }

            // We display the arrival node and the surroundings in yellow
            for (int x = -5; x < 6; x++)
            {
                for (int y = -5; y < 6; y++)
                {
                    if (mapWithheightValues.arrivalNode.coordinates[0] + x >= 0 && (mapWithheightValues.arrivalNode.coordinates[0] + x <= (mapWithheightValues.dimensions[0] - 1)) && mapWithheightValues.arrivalNode.coordinates[1] + y >= 0 && mapWithheightValues.arrivalNode.coordinates[1] + y <= mapWithheightValues.dimensions[1] - 1)
                    {
                        bmp.SetPixel(mapWithheightValues.arrivalNode.coordinates[0] + x, mapWithheightValues.arrivalNode.coordinates[1] + y, Color.FromArgb((int)255, (int)239, (int)0));
                    }
                }
            }

            // We display the path in red
            foreach (Node nodeInPath in mapWithheightValues.LeastCostPath)
            {
                bmp.SetPixel(nodeInPath.coordinates[0], nodeInPath.coordinates[1], Color.FromArgb((int)255, (int)0, (int)127));
            }

            return(bmp);
        }
        public static Bitmap MapToBitmap(Map mapWithheightValues, bool costMap)
        {
            Bitmap bmp = new Bitmap(mapWithheightValues.dimensions[0], mapWithheightValues.dimensions[1]);

            if (costMap)
            {
                RasterFunctions.generateCostMap(bmp, mapWithheightValues);
            }
            else
            {
                for (int y = 0; y < mapWithheightValues.dimensions[0]; y++)
                {
                    for (int x = 0; x < mapWithheightValues.dimensions[1]; x++)
                    {
                        // We find the node that have these coordinates in the list of all the nodes of the map
                        int height = mapWithheightValues.tableOfNodes[x, y].height;
                        RasterFunctions.chooseColorOfPixel(bmp, x, y, height);
                    }
                }
            }
            return(bmp);
        }