Skip to content

Commit

Permalink
Reset length, not just width and depth (hopefully sorts out #9)
Browse files Browse the repository at this point in the history
  • Loading branch information
dvdoug committed Jul 21, 2014
1 parent 4ec8269 commit 7269a19
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 19 deletions.
18 changes: 13 additions & 5 deletions Packer.php
Original file line number Diff line number Diff line change
Expand Up @@ -274,25 +274,33 @@ public function packIntoBox(Box $aBox, ItemList $aItems) {
(!$aItems->isEmpty() && $aItems->top() == $itemToPack && $remainingLength >= 2 * $itemLength)) {
$this->logger->log(LogLevel::DEBUG, "fits (better) unrotated");
$remainingLength -= $itemLength;
$layerWidth += $itemWidth;
$layerLength += $itemLength;
$layerWidth = max($itemWidth, $layerWidth);
}
else {
$this->logger->log(LogLevel::DEBUG, "fits (better) rotated");
$remainingLength -= $itemWidth;
$layerWidth += $itemLength;
$layerLength += $itemWidth;
$layerWidth = max($itemLength, $layerWidth);
}
$layerDepth = max($layerDepth, $itemToPack->getDepth()); //greater than 0, items will always be less deep
}
else {
if (!$layerWidth) {
if ($remainingWidth >= min($itemWidth, $itemLength) && $layerDepth > 0) {
$this->logger->log(LogLevel::DEBUG, "No more fit in lengthwise, resetting for new row");
$remainingLength += $layerLength;
$remainingWidth -= $layerWidth;
$layerWidth = $layerLength = 0;
continue;
}

if ($remainingLength < min($itemWidth, $itemLength) || $layerDepth == 0) {
$this->logger->log(LogLevel::DEBUG, "doesn't fit on layer even when empty");
break;
}

$remainingWidth = min(floor($layerWidth * 1.1), $aBox->getInnerWidth());
$remainingLength = min(floor($layerLength * 1.1), $aBox->getInnerLength());
$remainingWidth = $layerWidth ? min(floor($layerWidth * 1.1), $aBox->getInnerWidth()) : $aBox->getInnerWidth();
$remainingLength = $layerLength ? min(floor($layerLength * 1.1), $aBox->getInnerLength()) : $aBox->getInnerLength();
$remainingDepth -= $layerDepth;

$layerWidth = $layerLength = $layerDepth = 0;
Expand Down
2 changes: 1 addition & 1 deletion tests/boxes.csv
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Option 1,230,300,240,160,230,300,240,15000
Option 2,370,375,60,140,364,374,40,3000
Option 3,229,305,520,100,229,305,520,10000
Option 4,240,270,15,10,220,260,15,500
Option 4,240,270,15,10,220,260,15,500
26 changes: 13 additions & 13 deletions tests/expected.csv
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
009da5d2b856bef84b9fba40a17946da,1,0
009f0d24994b021fa2151198fe7dc839,1,0
00a5c92624b11041245f8527d0724448,1,0
00a85cf3514d2c6b6af0045b56ea33f6,2,0
00a85cf3514d2c6b6af0045b56ea33f6,1,0
00bc6c102e88469c8b25a91d15240a27,1,0
00c36fad1908c8fac68fd4f7e05413af,1,0
00c566ed39ba9d5ef3645444b40e80af,1,0
Expand Down Expand Up @@ -417,7 +417,7 @@
0dfd7e09319349be1c9e91d1a312ec37,1,0
0e0d3c1a7b872a1f983e1825984a3a63,1,0
0e16addc0900d805c8aaf88a9b0e6491,1,0
0e1d0f7619a9c6ff2c8052dc2f488d53,3,8800
0e1d0f7619a9c6ff2c8052dc2f488d53,2,0
0e26b1d44638932453aed48334cf5fdf,1,0
0e2a6576cf495aa475e6ca9a8d23b5fa,1,0
0e380996535e1f1e1cb42bc16442fc9a,1,0
Expand Down Expand Up @@ -730,7 +730,7 @@
17fc09ce7152a62c66635610843b26f5,1,0
17ffe2b0793c6b94ed7ce25c266dcd48,1,0
18006621edc79c61d85a4060eaf3b81b,1,0
18053b7ea34f179fe17ad8a2d83af33c,2,0
18053b7ea34f179fe17ad8a2d83af33c,1,0
180d5ae43f2c54215bffaf36f47a5c9f,1,0
181687cc4dad427de764958a43f90ce3,1,0
181e585a766703abc2d253fa9bbb4df9,1,0
Expand Down Expand Up @@ -1115,7 +1115,7 @@
252244865f58ca63d36852bcd10673a6,1,0
252622856061b82c751bbbbf99a861b9,1,0
252890ed39f9f8cef978e94bcd6b1c6f,1,0
252d8bdbfabd8f83543b696068183a07,2,0
252d8bdbfabd8f83543b696068183a07,1,0
25301e5820061f103d647b8eaa4e7317,1,0
2530eb45cbd4bcec88bfa1391fdde4c6,1,0
2531ce45bd486ef003d3da1878cb5e03,1,0
Expand Down Expand Up @@ -1175,7 +1175,7 @@
2708fd2dc0b6d86b7c8de4ada93441f4,1,0
270bd32c44833ebfe82ec7fbcdc25f48,1,0
270e8965b54f9120d6e1aedaeba15bd7,1,0
27196022d71fa0c0209c10883e2472a5,2,28561
27196022d71fa0c0209c10883e2472a5,1,0
2727754b5cb47cea9b6ded85c3a0d7a4,1,0
273db54a738f4d04c473fd08deba3a4c,1,0
274919613dc315f08d2d5e71ed6f412f,1,0
Expand All @@ -1201,7 +1201,7 @@
284d201f18c543b9f47abb8c375cc15d,1,0
285364118fd21cfcea1d37612cc32110,1,0
2874952e75bd841becdaf3a0de0177c1,1,0
287a682fa23dfff23bf2e80e5705d294,6,8800
287a682fa23dfff23bf2e80e5705d294,3,8800
287b2ad13b0d20a7d111aef8474875f1,1,0
28847b5a8cb6339b1947655b11be7f7c,1,0
288a0908058eb783b73b536757f55c09,1,0
Expand Down Expand Up @@ -1629,7 +1629,7 @@
3702c98cf273e30e08eeab16205ce064,1,0
370818db5ed9bc534879357305747a8b,1,0
37097d3d4e65f1e955856ed0376003a1,1,0
371bb97d48f6d973b8c225a0a2363ef5,2,0
371bb97d48f6d973b8c225a0a2363ef5,1,0
3723b0b77192476c31c6421edfd07c3a,1,0
3732da38cadb7a6e22ebee9025fd804c,1,0
373aa9cf15ef582fe4fb8bd5ab467d64,1,0
Expand Down Expand Up @@ -3166,7 +3166,7 @@
68329855f1d25a7017bd2cf89386d8b2,1,0
683518ceb90478f1ea11944dc90ee75c,1,0
683ab1e3e3698ee6fdf3e90fcf5662a9,1,0
6842657d1950f08105f7d1d2ff2f35ed,3,8800
6842657d1950f08105f7d1d2ff2f35ed,2,0
684496d17e051e6932a66b6961783e0f,1,0
68545d6d1fa27f425f08acdad9a5287b,1,0
6859f93d39432396269b768206acb3e7,1,0
Expand Down Expand Up @@ -3499,7 +3499,7 @@
72ecaa6dbb934be4f2524df6a543703e,1,0
7305ac70009d1c6253ebf16080f0345b,1,0
7350585006713e0463c2282d543732be,2,6724
735101c531e3332adc5fde16f4a88f59,2,0
735101c531e3332adc5fde16f4a88f59,1,0
735f10f5e97de06d6af46abc3744bc65,1,0
73629c8e0e3c78d24121d25bfe5254f2,1,0
7366285d837921c76989d9f797c1f0c7,1,0
Expand Down Expand Up @@ -5766,7 +5766,7 @@ be91977609f33a3a66f6ef4bc64a0c9a,1,0
be928d8bda64337532bc1612bf885f63,1,0
be95a3bca96fe80840b46e7c95c54508,1,0
bea1e071915db824a7737fb86e9e03c5,1,0
bea87b5dd753b46d8fc70236f761e8f0,2,28561
bea87b5dd753b46d8fc70236f761e8f0,1,0
beb9349f4c770ce2691afcf91e2e8511,1,0
bec0a916d6ca06bb31a9de6e9b273ecd,1,0
bec9506078214592e0c0a8e0a61b9ed4,1,0
Expand Down Expand Up @@ -5949,7 +5949,7 @@ c4a24b4e74d7a3446a8febc30e284f01,1,0
c4a4fa982dab39c21f0a38a5bb440a2d,1,0
c4baff5d189689602a5cfbfe28776510,1,0
c4cd5aacfd2252ac5a824d29e759d395,1,0
c4d085b082530770ef8ff6a4acef4d1c,3,8800
c4d085b082530770ef8ff6a4acef4d1c,2,0
c4d17089e2a7eb817535beacf191a551,1,0
c4ebb35889ac41dc3345b4fbf58b43bb,1,0
c4f11764bdedb97a2f2a2cce72695767,2,0
Expand Down Expand Up @@ -6152,7 +6152,7 @@ cb980c805f19cf88ec46ad46798e43cc,1,0
cb9ad67fd850693539e22caf75b13c59,1,0
cba5446d897420cdc035ce57d889cc5d,1,0
cba7bcb0dc34523ccc7e79247a158e29,1,0
cba9fac09e78f6ffae1b9c3a47c0520d,2,0
cba9fac09e78f6ffae1b9c3a47c0520d,1,0
cbb8d81026c5b0df78404732fb7e7cce,1,0
cbba22ac855eca5c2f1bb92455ea32b1,1,0
cbbfae8d22d90f72f2565d8913c45282,1,0
Expand Down Expand Up @@ -6612,7 +6612,7 @@ da86287bf6f81a4014cc04934f38f13a,1,0
da99c8b8ff8440250ef1fa93d0581b72,1,0
da9facf0b7ca756ff233e33c248e0052,1,0
daacdb8b20467f50b3271ea0735b520b,1,0
dade52821eeddf2833eeb6035a0ce174,2,0
dade52821eeddf2833eeb6035a0ce174,1,0
daed11f8998b1d942e2e6e8c6b09f7ec,1,0
daefb6676e7e71354cf8a14a3d30537c,1,0
daf1d8341f1ab92832cfee6b6982ceb4,1,0
Expand Down

0 comments on commit 7269a19

Please sign in to comment.