refactor: replace VPattern/HPattern with unified FillGrid method

Consolidates two nearly-identical grid generation methods into a single
FillGrid method with a columnMajor parameter. Fixes bug in HPattern
where inner loop used rows instead of columns, and fixes FillNoRotation
silently discarding results by not adding them to Bin.Items.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-07 21:27:11 -05:00
parent 062981ebe9
commit d3704378c2
3 changed files with 16 additions and 57 deletions

View File

@@ -52,12 +52,12 @@ namespace OpenNest.RectanglePacking
item.Location = bin.Location;
bin.Items.AddRange(VPattern(item, normalRows, normalColumns, int.MaxValue));
bin.Items.AddRange(FillGrid(item, normalRows, normalColumns, int.MaxValue));
item.Location.X += item.Width * normalColumns;
item.Rotate();
bin.Items.AddRange(VPattern(item, rotateRows, rotateColumns, int.MaxValue));
bin.Items.AddRange(FillGrid(item, rotateRows, rotateColumns, int.MaxValue));
return bin;
}
@@ -77,12 +77,12 @@ namespace OpenNest.RectanglePacking
item.Location = bin.Location;
bin.Items.AddRange(VPattern(item, normalRows, normalColumns, int.MaxValue));
bin.Items.AddRange(FillGrid(item, normalRows, normalColumns, int.MaxValue));
item.Location.Y += item.Height * normalRows;
item.Rotate();
bin.Items.AddRange(VPattern(item, rotateRows, rotateColumns, int.MaxValue));
bin.Items.AddRange(FillGrid(item, rotateRows, rotateColumns, int.MaxValue));
return bin;
}