mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-28 19:01:34 +00:00
test: W4 #473 — компактная стена, чтобы AABB-отсечение решало
Issue: #473 User-Visible: no
This commit is contained in:
@@ -806,7 +806,9 @@ test('#473 W4: AABB-отсечение учитывает зазор безоп
|
||||
// Плита, чьи границы не пересекают границы стены, но лежат внутри gap,
|
||||
// обязана считаться «у стены». Отсечение без зазора отбросило бы силуэт
|
||||
// до точного теста, и плита легла бы вплотную к стене.
|
||||
const wall = { outer: buildIsoPlatePolygon([0, 50], [4, 60], ISO_WALL_HEIGHT) };
|
||||
// Стена — компактный силуэт: у длинной стены AABB в изометрии накрывает плиту
|
||||
// при любом сдвиге вдоль оси, и отсечение не участвует в решении.
|
||||
const wall = { outer: buildIsoPlatePolygon([0, 50], [2, 2], ISO_WALL_HEIGHT) };
|
||||
const owner = { id: 'owner', outer: [[0, 0], [100, 0], [100, 100], [0, 100]], holes: [], safePoint: [50, 50] };
|
||||
const placeAt = (x, safetyGapCssPx) => resolveIsoOverlayPlacement({
|
||||
kind: 'device', floorAnchor: [x, 50], plateHalfSize: [2, 2],
|
||||
@@ -816,9 +818,9 @@ test('#473 W4: AABB-отсечение учитывает зазор безоп
|
||||
unitsPerPixel: 1, safetyGapCssPx, wallHeight: ISO_WALL_HEIGHT, visualOffset: 0,
|
||||
});
|
||||
// без зазора плита на расстоянии 2 единиц от стены — не у стены
|
||||
const noGap = placeAt(4 + 2 + 2, 0);
|
||||
const noGap = placeAt(2 + 2 + 2, 0);
|
||||
assert.equal(noGap.nearWallBefore, false, 'контроль: без зазора не у стены');
|
||||
// с зазором 4 — у стены, хотя AABB не пересекаются
|
||||
const withGap = placeAt(4 + 2 + 2, 4);
|
||||
const withGap = placeAt(2 + 2 + 2, 4);
|
||||
assert.equal(withGap.nearWallBefore, true, 'в пределах зазора — у стены');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user