public HandCollection Create(ShapeCollection shapes) { if (shapes.Count == 0) { this.currentValue = Clear(); } else { this.currentValue = CreateHandCollection(shapes); } return this.currentValue; }
public ShapeCollection Create(ClusterCollection clusterData) { var result = new ShapeCollection(); foreach (var cluster in clusterData.Clusters) { var convexHull = new GrahamScan(cluster.Points).FindHull(); var map = CreateMap(cluster); var contour = CreateContour(map, cluster); if (contour.Count >= settings.MinimalPointsInContour) { result.Shapes.Add(new Shape(cluster.Center, cluster.Volume, contour, convexHull, cluster.Points)); } } return result; }
public ShapeCollection Create(ClusterCollection clusterData) { var result = new ShapeCollection(); foreach (var cluster in clusterData.Clusters) { var convexHull = new GrahamScan(cluster.Points).FindHull(); var map = CreateMap(cluster); var contour = CreateContour(map, cluster); if (contour.Count >= settings.MinimalPointsInContour) { result.Shapes.Add(new Shape(cluster.Center, cluster.Volume, contour, convexHull, cluster.Points)); } } return(result); }
private HandCollection CreateHandCollection(ShapeCollection shapes) { var map = new DistanceMap<HandData, Shape>(currentValue.Hands); map.Map(shapes.Shapes); var handData = new List<HandData>(); foreach (var tupple in map.MappedItems) { handData.Add(this.Create(tupple.Item1, tupple.Item2)); } foreach (var shape in map.UnmappedItems) { handData.Add(this.Create(shape)); } foreach (var discontinuedHandData in map.DiscontinuedItems) { this.ReturnIdToPool(discontinuedHandData.Id); } return new HandCollection(handData); }