private void AddToCornerList(List <Graph.Corner> corners, Graph.Corner corner) { if (corner != null && !corners.Contains(corner)) { corners.Add(corner); } }
private Graph.Corner MakeCorner(Point point) { if (point == null) { return(null); } for (int i = (int)(point.X) - 1; i <= (int)(point.X) + 1; i++) { if (_cornerMap.ContainsKey(i)) { foreach (Graph.Corner corner in _cornerMap[i]) { float dx = (float)point.X - corner.pos.x; float dy = (float)point.Y - corner.pos.y; if (Mathf.Sqrt(dx * dx + dy * dy) < Mathf.Epsilon) { return(corner); } } } } int index = (int)point.X; if (!_cornerMap.ContainsKey(index) || _cornerMap[index] == null) { _cornerMap[index] = new List <Graph.Corner>(); } Graph.Corner q = new Graph.Corner { id = data.corners.Count, pos = point.ToVector(), border = (point.X == 0 || point.X == rectangle.Width || point.Y == 0 || point.Y == rectangle.Height), touches = new List <Graph.Center>(), protrudes = new List <Graph.Edge>(), adjacent = new List <Graph.Corner>() }; data.corners.Add(q); _cornerMap[index].Add(q); return(q); }