public RoadMap(ITrapezoidalMap trapezoidalMap, HashSet<ITrapezoid> forbiddenSpace) { this.trapezoidalMap = trapezoidalMap; this.forbiddenSpace = forbiddenSpace; this.junctionByTrapezoid = new Dictionary<ITrapezoid, Junction>(); foreach (var trapezoid in trapezoidalMap.Trapezoids) { if (forbiddenSpace.Contains(trapezoid)) continue; var position = GetCenterPoint(trapezoid); var junction = new Junction(position); junctionByTrapezoid.Add(trapezoid, junction); } foreach (var vertical in trapezoidalMap.VerticalEdges) { if (forbiddenSpace.Contains(vertical.LeftTrapezoid)) { Debug.Assert(forbiddenSpace.Contains(vertical.RightTrapezoid)); continue; } var position = GetCenterPoint(vertical); var junction = new Junction(position); var leftJunction = junctionByTrapezoid[vertical.LeftTrapezoid]; Road.Connect(leftJunction, junction); var rightJunction = junctionByTrapezoid[vertical.RightTrapezoid]; Road.Connect(rightJunction, junction); } }
public RoadMap(ITrapezoidalMap trapezoidalMap, HashSet <ITrapezoid> forbiddenSpace) { this.trapezoidalMap = trapezoidalMap; this.forbiddenSpace = forbiddenSpace; this.junctionByTrapezoid = new Dictionary <ITrapezoid, Junction>(); foreach (var trapezoid in trapezoidalMap.Trapezoids) { if (forbiddenSpace.Contains(trapezoid)) { continue; } var position = GetCenterPoint(trapezoid); var junction = new Junction(position); junctionByTrapezoid.Add(trapezoid, junction); } foreach (var vertical in trapezoidalMap.VerticalEdges) { if (forbiddenSpace.Contains(vertical.LeftTrapezoid)) { Debug.Assert(forbiddenSpace.Contains(vertical.RightTrapezoid)); continue; } var position = GetCenterPoint(vertical); var junction = new Junction(position); var leftJunction = junctionByTrapezoid[vertical.LeftTrapezoid]; Road.Connect(leftJunction, junction); var rightJunction = junctionByTrapezoid[vertical.RightTrapezoid]; Road.Connect(rightJunction, junction); } }