示例#1
0
        /// <summary>
        /// Given the numPRMpoints and the obstacleRatio, calculate an approriate maximum distance an edge can be. 
        /// </summary>
        /// <returns></returns>maximumDistance
        /// 
        private void createPRM()
        {
            PRMGraph = new Graph();
            createPRMpoints();
            createkEdges();

            if (PRMGraph.AllNodes.Count > numPRMpoints)
            {
                int numberToRemove = PRMGraph.AllNodes.Count - numPRMpoints;
                removeExtraPoints(numberToRemove);
            }
            else if (PRMGraph.AllNodes.Count < numPRMpoints)
            {
                int numToAdd = numPRMpoints - PRMGraph.AllNodes.Count;
                addMorePoints(numToAdd);
            }
        }
示例#2
0
        void IXmlSerializable.ReadXml(XmlReader reader)
        {
            XmlSerializer graphSerializer = new XmlSerializer(typeof(Graph));
            XmlSerializer doubleSerializer = new XmlSerializer(typeof(double));
            XmlSerializer mapSerializer = new XmlSerializer(typeof(Field));
            XmlSerializer vector2Serializer = new XmlSerializer(typeof(Vector2));
            XmlSerializer polygonSerializer = new XmlSerializer(typeof(Polygon));
            XmlSerializer intSerializer = new XmlSerializer(typeof(int));
            bool wasEmpty = reader.IsEmptyElement;
            reader.Read(); // read root tag
            if (wasEmpty)
            {
                return;
            }

            while (reader.NodeType != XmlNodeType.EndElement)
            {
                if (reader.IsStartElement("PRMGraph"))
                {
                    reader.ReadStartElement("PRMGraph");
                    PRMGraph = (Graph)graphSerializer.Deserialize(reader);
                    reader.ReadEndElement();
                }

                else if (reader.IsStartElement("numPRMpoints"))
                {
                    reader.ReadStartElement("numPRMpoints");
                    numPRMpoints = (int)intSerializer.Deserialize(reader);
                    reader.ReadEndElement();
                }

                else if (reader.IsStartElement("PRMmap"))
                {
                    reader.ReadStartElement("PRMmap");
                    PRMmap = (Field)mapSerializer.Deserialize(reader);
                    reader.ReadEndElement();
                }

                else if (reader.IsStartElement("mapPoint"))
                {
                    reader.ReadStartElement("mapPoint");
                    mapPoint = (Vector2)vector2Serializer.Deserialize(reader);
                    reader.ReadEndElement();
                }

                else if (reader.IsStartElement("obstacles"))
                {
                    if (reader.IsEmptyElement)
                    {
                        reader.ReadStartElement("obstacles");
                    }
                    else
                    {
                        reader.ReadStartElement("obstacles");
                        while (reader.NodeType != System.Xml.XmlNodeType.EndElement)
                        {

                            reader.ReadStartElement("obstacle");
                            Polygon p = (Polygon)polygonSerializer.Deserialize(reader);
                            reader.ReadEndElement();
                            obstacles.Add(p);

                        }
                        reader.ReadEndElement();
                    }
                }
                else if (reader.IsStartElement("maxDistance"))
                {
                    reader.ReadStartElement("maxDistance");
                    maxDistance = (double)doubleSerializer.Deserialize(reader);
                    reader.ReadEndElement();
                }
                else if (reader.IsStartElement("obstacleRatio"))
                {
                    reader.ReadStartElement("obstacleRatio");
                    obstacleRatio = (double)doubleSerializer.Deserialize(reader);
                    reader.ReadEndElement();
                }
            }
            reader.ReadEndElement();
        }