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)); } } }
public override void GenerateLayer(LayerCyl layer, double actualLength, double actualWidth) { layer.Clear(); throw new NotImplementedException(); }