private void ConnectFreePointToLateralEdge(FreePoint freePoint, Directions lateralDir) { // Turn on pivot vertex to either side to find the next edge to connect to. If the freepoint is // overlapped (inside an obstacle), just find the closest ScanSegment outside the obstacle and // start extending from there; otherwise, we can have the FreePoint calculate its max visibility. var end = freePoint.IsOverlapped ? this.InBoundsGraphBoxIntersect(freePoint.Point, lateralDir) : freePoint.MaxVisibilityInDirectionForNonOverlappedFreePoint(lateralDir, this.TransUtil); var lateralEdge = this.FindorCreateNearestPerpEdge(end, freePoint.Point, lateralDir, freePoint.InitialWeight); // There may be no VisibilityEdge between the current point and any adjoining obstacle in that direction. if (null != lateralEdge) { freePoint.AddEdgeToAdjacentEdge(TransUtil, lateralEdge, lateralDir, this.portSpliceLimitRectangle); } }