Exemplo n.º 1
0
        private IHSExplicitVectorValue <HSEdgeState> __qwGetStartVector(IQGVertex startVertex)
        {
            List <HSEdgeState> edgeStates = new List <HSEdgeState>();

            double n = startVertex.GraphEdges.Count();
            IAlgebraicExpression coefficient = IAlgebraicExpression.RealNumber(1.0d / Math.Sqrt(n));

            foreach (QGEdge edge in startVertex.GraphEdges)
            {
                HSEdgeState edgeState;
                if (edge.Vertex1 == startVertex)
                {
                    edgeState = new HSEdgeState(edge.Vertex1, edge.Vertex2);
                }
                else
                {
                    edgeState = new HSEdgeState(edge.Vertex2, edge.Vertex1);
                }

                edgeStates.Add(edgeState);
            }

            var vectorTerms = edgeStates.Select(s => new VectorTerm <HSEdgeState>(s, coefficient));

            return(IHSExplicitVector <HSEdgeState> .VectorValue(vectorTerms));
        }
        private void __loadVertexIDTypeCB()
        {
            if (this.LoadedVertices.Count() != 1)
            {
                this.VertexIDTypeCB.SelectedIndex = -1;
                this.VertexIDTypeCB.IsEnabled     = false;
                this.VertexIDField.FieldText      = "";
                this.VertexIDField.IsEnabled      = false;

                return;
            }

            IQGVertex loadedVertex = this.LoadedVertices.First();

            this.VertexIDTypeCB.SelectedIndex = (int)loadedVertex.VertexIDType;

            if (loadedVertex.VertexIDType == QGVertexIDType.Sequential)
            {
                this.VertexIDField.FieldText = "";
                this.VertexIDField.IsEnabled = false;
            }
            else
            {
                this.VertexIDField.FieldText = loadedVertex.ID as string;
                this.VertexIDField.IsEnabled = true;
            }
        }
        private void __IsStartVertexCheckbox_ValueChanged(object sender, RoutedEventArgs e)
        {
            if (_IsLoading)
            {
                return;
            }

            if (this.LoadedVertices.Count() != 1)
            {
                throw new Exception("Setting the start vertex status can only be done to one vertex.");
            }

            IQGVertex loadedVertex = this.LoadedVertices.First();

            if (this.IsStartVertexCheckbox.IsChecked == true)
            {
                loadedVertex.SetAsStart();
            }
            else
            {
                loadedVertex.ClearVertexStatus();
            }

            __reloadControl();
        }
Exemplo n.º 4
0
        public IQGVertex OtherVertex(IQGVertex v)
        {
            if (v == this.Vertex1)
            {
                return(this.Vertex2);
            }
            if (v == this.Vertex2)
            {
                return(this.Vertex1);
            }

            throw new Exception("Vertex v is not present in the edge.");
        }
Exemplo n.º 5
0
        protected override void OnAfterDeserializing(QXDeserializingEventArgs <QGRootLayer> e)
        {
            base.OnAfterDeserializing(e);

            foreach (QGXmlEdgeInfo ei in QXEdgeSerializer.LoadedEdges)
            {
                IQGVertex vertex1 = QXVertexSerializer.IndexToVertexDictionary[ei.Vertex1Index];
                IQGVertex vertex2 = QXVertexSerializer.IndexToVertexDictionary[ei.Vertex2Index];

                vertex1.CreateEdge(vertex2);
            }

            QXVertexSerializer.IndexToVertexDictionary.Clear();
            QXEdgeSerializer.LoadedEdges.Clear();
        }
        private void __VertexIDField_TextChanged(object sender, RoutedEventArgs e)
        {
            if (_IsLoading)
            {
                return;
            }

            if (this.LoadedVertices.Count() != 1)
            {
                throw new Exception("Setting vertex ID can only be done to one vertex at a time.");
            }

            IQGVertex loadedVertex = this.LoadedVertices.First();

            loadedVertex.ID = this.VertexIDField.FieldText;

            __reloadControl();
        }
Exemplo n.º 7
0
        public Vector GetEdgeVector(IQGVertex pointingTo)
        {
            if (this.ParentLayer == null)
            {
                return(default(Vector));
            }

            if (pointingTo != Vertex1 && pointingTo != Vertex2)
            {
                throw new Exception("Nope.");
            }

            IQGVertex vTo   = pointingTo == this.Vertex1 ? this.Vertex1 : this.Vertex2;
            IQGVertex vFrom = pointingTo == this.Vertex1 ? this.Vertex2 : this.Vertex1;

            Point pTo   = this.ParentLayer.GetLocalCoordinatesOf(vTo);
            Point pFrom = this.ParentLayer.GetLocalCoordinatesOf(vFrom);

            return(pTo - pFrom);
        }
Exemplo n.º 8
0
        public QGEdge(IQGVertex v1, IQGVertex v2)
            : base()
        {
            this.Vertex1 = v1;
            this.Vertex2 = v2;

            this.WPFSurfaceLine        = new Line();
            this.SurfaceThickness      = 15;
            this.WPFSurfaceLine.Stroke = Brushes.Transparent;

            this.WPFEdgeLine = new Line();
            this.WPFEdgeLine.StrokeThickness = this.LineThickness;
            this.WPFEdgeLine.Stroke          = Brushes.DarkBlue;

            this.RegisterWPFElement(this.WPFEdgeLine);
            this.RegisterWPFElement(this.WPFSurfaceLine);
            this.SetWPFPrimaryElement(this.WPFSurfaceLine);

            ///////
            ((IQGDraggable)this.Vertex1).AddDragStartEventHandler(__VertexDragStart, QGDragParameterType.All);
            ((IQGDraggable)this.Vertex2).AddDragStartEventHandler(__VertexDragStart, QGDragParameterType.All);

            ((IQGDraggable)this.Vertex1).AddDragStopEventHandler(__VertexDragStop, QGDragParameterType.All);
            ((IQGDraggable)this.Vertex2).AddDragStopEventHandler(__VertexDragStop, QGDragParameterType.All);

            this.Vertex1.PositionChange += __positionChange;
            this.Vertex2.PositionChange += __positionChange;

            this.Vertex1.RegisterControlInitMethod(__registerParent);
            this.Vertex2.RegisterControlInitMethod(__registerParent);

            ((IQGDraggable)this).SetDraggability(true, QGDragParameterType.Active);
            ((IQGDraggable)this).SetDraggability(false, QGDragParameterType.Passive);
            ((IQGDraggable)this).SetDraggability(false, QGDragParameterType.Proxy);

            ((IQGDraggable)this).SetDragMobility(false);

            this.SetProxyTargets(_ProxyTargets, QGDragParameterType.Active);
            //this.UserSelectable = true;
        }
        private void __VertexIDTypeCB_SelectionChanged(object sender, RoutedEventArgs e)
        {
            if (_IsLoading)
            {
                return;
            }

            if (this.LoadedVertices.Count() != 1)
            {
                throw new Exception("Setting vertex ID type can only be done to one vertex at a time.");
            }

            IQGVertex loadedVertex = this.LoadedVertices.First();

            loadedVertex.VertexIDType = (QGVertexIDType)this.VertexIDTypeCB.SelectedIndex;
            if (loadedVertex.VertexIDType == QGVertexIDType.Local || loadedVertex.VertexIDType == QGVertexIDType.Global && !(loadedVertex.ID is string))
            {
                loadedVertex.ID = "";
            }

            __reloadControl();
        }
Exemplo n.º 10
0
 public QGEdge GetEdge(IQGVertex v2) => ((IQGVertex)this).GetEdge(v2);
Exemplo n.º 11
0
 public static bool IsStartVertex(this IQGVertex v) => IQGVertex.StartVertex == v;
Exemplo n.º 12
0
 public static bool IsMarked(this IQGVertex v) => v.VertexStatus == "marked";
Exemplo n.º 13
0
 public static void SetAsStart(this IQGVertex v) => v.SetVertexStatus("start");
Exemplo n.º 14
0
 public static void MarkVertex(this IQGVertex v) => v.SetVertexStatus("marked");
Exemplo n.º 15
0
 public HSEdgeState(IQGVertex v1, IQGVertex v2)
 {
     this.Vertex1 = v1;
     this.Vertex2 = v2;
 }
Exemplo n.º 16
0
 public QGEdge CreateEdgeIfAbsent(IQGVertex v2) => ((IQGVertex)this).CreateEdgeIfAbsent(v2);
Exemplo n.º 17
0
 public QGEdge CreateEdge(IQGVertex v2) => ((IQGVertex)this).CreateEdge(v2);
Exemplo n.º 18
0
 public bool ContainsEdge(IQGVertex v2) => ((IQGVertex)this).ContainsEdge(v2);
Exemplo n.º 19
0
 public bool ContainsVertex(IQGVertex v)
 {
     return(v == this.Vertex1 || v == this.Vertex2);
 }