Exemplo n.º 1
0
 public void ResetAll(float circleRadius, ICirclePackingBorder border, float precision)
 {
     this.circleRadius   = circleRadius;
     circleArea          = new Circle2(Vector2.Zero, circleRadius).Area;
     this.border         = border;
     this.precision      = precision;
     maxNumCircles       = (int)(border.Area / circleArea);
     backCircleCenters   = new Vector2[maxNumCircles];
     frontCircleCenters  = new Vector2[maxNumCircles];
     frontCirclesGrid    = new CirclePackingCircleGrid(circleRadius, border.BoundingRect);
     frontCircleStatuses = new CircleStatus[maxNumCircles];
 }
 private IModel3D GetRelevantBorderModel()
 {
     if (lastBorder == border)
     {
         return(borderModel);
     }
     lastBorder                    = border;
     borderModel.Positions         = lastBorder.Points.ConcatSingle(lastBorder.Points[0]).Select(x => new Vector3(x, 0)).ToArray();
     borderModel.Indices           = Enumerable.Range(0, lastBorder.Points.Count + 1).ToArray();
     borderModel.IndexSubranges[0] = new ExplicitModelIndexSubrange(0, borderModel.Indices.Length);
     borderModel.RecalculateInfo();
     borderModel.OnModified(null);
     return(borderModel);
 }
 public void Reset()
 {
     border         = BorderByName(ShapeName);
     solvingProcess = solver.Solve(new CirclePackingSolverSettings
     {
         CircleRadius            = CircleRadius,
         Precision               = Precision,
         Border                  = border,
         MaxIterationsPerAttempt = MaxIterationsPerAttempt,
         CostDecreaseGracePeriod = CostDecreaseGracePeriod,
         ShakeIterations         = ShakeIterations,
         ShakeStrength           = ShakeStrength,
         MinCostDecrease         = MinCostDecrease
     });
 }