public float GetArea()
        {
            var firstEdgeLength  = VectorService.NodesToDirection(Edges[0].NodeA, Edges[0].NodeB).magnitude;
            var secondEdgeLength = VectorService.NodesToDirection(Edges[1].NodeA, Edges[1].NodeB).magnitude;

            return(firstEdgeLength * secondEdgeLength);
        }
        public Line GetCutLine(System.Random rand)
        {
            var firstEdgeLength  = VectorService.NodesToDirection(Edges[0].NodeA, Edges[0].NodeB).magnitude;
            var secondEdgeLength = VectorService.NodesToDirection(Edges[1].NodeA, Edges[1].NodeB).magnitude;
            var longerEdge       = firstEdgeLength > secondEdgeLength ? Edges[0] : Edges[1];

            Vector2 nodeAToB    = VectorService.NodesToDirection(longerEdge.NodeA, longerEdge.NodeB);
            int     randomValue = rand.Next(0, 4);
            float   offsetToUse = 0.3f + 0.1f * randomValue;

            var middlePoint = new Node
                              (
                (longerEdge.NodeA.X + nodeAToB.x * offsetToUse),
                (longerEdge.NodeA.Y + nodeAToB.y * offsetToUse)
                              );

            return(new Line(middlePoint, nodeAToB));
        }
        public Edge GetCutEdge()
        {
            var firstEdgeLength  = VectorService.NodesToDirection(Edges[0].NodeA, Edges[0].NodeB).magnitude;
            var secondEdgeLength = VectorService.NodesToDirection(Edges[1].NodeA, Edges[1].NodeB).magnitude;
            var longerEdge       = firstEdgeLength > secondEdgeLength ? Edges[0] : Edges[1];
            var otherLongerEdge  = firstEdgeLength > secondEdgeLength ? Edges[2] : Edges[3];

            var middlePoint = new Node
                              (
                (longerEdge.NodeA.X + longerEdge.NodeB.X) / 2.0f,
                (longerEdge.NodeA.Y + longerEdge.NodeB.Y) / 2.0f
                              );

            var otherMiddlePoint = new Node
                                   (
                (otherLongerEdge.NodeA.X + otherLongerEdge.NodeB.X) / 2.0f,
                (otherLongerEdge.NodeA.Y + otherLongerEdge.NodeB.Y) / 2.0f
                                   );

            return(new Edge(middlePoint, otherMiddlePoint));
        }