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)); }