Beispiel #1
0
        public override void GenerateLayer(LayerCyl layer, double actualLength, double actualWidth)
        {
            layer.Clear();

            double palletLength = GetPalletLength(layer);
            double palletWidth  = GetPalletWidth(layer);
            double radius       = layer.CylinderRadius;
            double diameter     = 2.0 * layer.CylinderRadius;

            int sizeX = (int)Math.Floor(palletLength / diameter);
            int sizeY = (int)Math.Floor(palletWidth / diameter);

            double offsetX = 0.5 * (palletLength - actualLength);
            double offsetY = 0.5 * (palletWidth - actualWidth);

            double spaceX = sizeX > 1 ? (actualLength - sizeX * diameter) / (sizeX - 1) : 0.0;
            double spaceY = sizeY > 1 ? (actualWidth - sizeY * diameter) / (sizeY - 1) : 0.0;

            for (int j = 0; j < sizeY; ++j)
            {
                for (int i = 0; i < sizeX; ++i)
                {
                    AddPosition(layer, new Vector2D(
                                    radius + offsetX + i * (diameter + spaceX)
                                    , radius + offsetY + j * (diameter + spaceY)
                                    ));
                }
            }
        }
        public override void GenerateLayer(LayerCyl layer, double actualLength, double actualWidth)
        {
            layer.Clear();
            int firstRowLength = 0; int secondRowLength = 0; int rowNumber = 0;

            if (!ComputeRowNumberAndLength(layer
                                           , out firstRowLength, out secondRowLength, out rowNumber
                                           , out actualLength, out actualWidth))
            {
                return;
            }

            double palletLength = GetPalletLength(layer);
            double palletWidth  = GetPalletWidth(layer);
            double radius       = layer.CylinderRadius;
            double offsetX      = 0.5 * (palletLength - actualLength);
            double offsetY      = 0.5 * (palletWidth - actualWidth);

            for (int i = 0; i < rowNumber; ++i)
            {
                double y = (offsetY + radius) + i * radius * Math.Sqrt(3.0);
                for (int j = 0; j < (i % 2 == 0 ? firstRowLength : secondRowLength); ++j)
                {
                    AddPosition(layer, new Vector2D(offsetX + ((i % 2 == 0) ? 0.0 : radius) + j * 2.0 * radius + radius, y));
                }
            }
        }
        public override void GenerateLayer(LayerCyl layer, double actualLength, double actualWidth)
        {
            layer.Clear();

            double palletLength = GetPalletLength(layer);
            double palletWidth  = GetPalletWidth(layer);
            double radius       = layer.CylinderRadius;
            double diameter     = 2.0 * layer.CylinderRadius;

            int alignedRowLength = 0, stagRowLength = 0;
            int rowNumber1 = 0, rowNumber2 = 0;

            ComputeRowNumberAndLength(layer
                                      , out alignedRowLength, out rowNumber1
                                      , out stagRowLength, out rowNumber2
                                      , out actualLength, out actualWidth);

            double offsetX = 0.5 * (palletLength - actualLength);
            double offsetY = 0.5 * (palletWidth - actualWidth);

            for (int j = 0; j < rowNumber1; ++j)
            {
                for (int i = 0; i < alignedRowLength; ++i)
                {
                    AddPosition(layer, new Vector2D(
                                    radius + offsetX + i * diameter
                                    , radius + offsetY + j * diameter
                                    ));
                }
            }

            for (int i = 0; i < rowNumber2; ++i)
            {
                double y = radius + offsetY + (rowNumber1 - 1.0) * diameter + (i + 1) * radius * Math.Sqrt(3.0);
                for (int j = 0; j < (i % 2 == 0 ? stagRowLength : alignedRowLength); ++j)
                {
                    AddPosition(layer, new Vector2D(offsetX + ((i % 2 != 0) ? 0.0 : radius) + j * 2.0 * radius + radius, y));
                }
            }
        }
Beispiel #4
0
 public override void GenerateLayer(LayerCyl layer, double actualLength, double actualWidth)
 {
     layer.Clear();
     throw new NotImplementedException();
 }