diff --git a/public/js/webgl-book-shape-lab.js b/public/js/webgl-book-shape-lab.js index 0304b22..5005d1a 100644 --- a/public/js/webgl-book-shape-lab.js +++ b/public/js/webgl-book-shape-lab.js @@ -70,11 +70,12 @@ const FAST_FLIP_COUNT = 10; const FAST_FLIP_OVERLAP = 5; const OPEN_SEAM_GAP = 0.003; const PAGE_COUNT_MIN = 40; +const PAGE_COUNT_MAX = 500; const PAGE_COUNT_STEP = 10; -const PAGE_WIDTH = 1.62; -const PAGE_SPLINE_LENGTH = 1.955; const PAGE_LINE_SEGMENTS = 48; const PAGE_DEPTH = 2.24; +const PAGE_WIDTH = PAGE_DEPTH * 2 / 3; +const PAGE_SPLINE_LENGTH = PAGE_WIDTH; const COVER_DEPTH = 2.30; const COVER_OVERHANG = (COVER_DEPTH - PAGE_DEPTH) * 0.5; const COVER_SUPPORT_OVERHANG = COVER_OVERHANG; @@ -259,7 +260,7 @@ function rebuildBook() { activeSpineHalf = spineHalf; activeCoverOuterX = spineHalf + pageWidth + COVER_OVERHANG; const lines = simulatePageLines(bundleCount, pageWidth, pageSplineLength, spineWidth, foreEdgeX, bundleSpacing, leftCount); - const coverOuterX = solvedStackOuterX(lines) + COVER_OVERHANG; + const coverOuterX = spineHalf + pageWidth + COVER_OVERHANG; activeCoverOuterX = coverOuterX; lastLengthError = measureLineLengthError(lines, pageSplineLength); lastSpacingError = measureStackSpacingError(lines, bundleSpacing); @@ -427,25 +428,7 @@ function calculateSpineWidth(bundleCount) { } function calculateMaximumPageCount() { - let maximum = PAGE_COUNT_MIN; - for (let candidate = PAGE_COUNT_MIN; candidate <= 1000; candidate += PAGE_COUNT_STEP) { - const bundleCount = Math.max(4, Math.round(candidate / 10)); - if (!isBundleCountReachable(bundleCount)) break; - maximum = candidate; - } - return maximum; -} - -function isBundleCountReachable(bundleCount) { - const spineWidth = calculateSpineWidth(bundleCount); - const bundleSpacing = calculateBundleSpacing(bundleCount, spineWidth, bundleCount); - const foreEdgeX = spineWidth * 0.5 + PAGE_WIDTH; - const target = restingTarget(1, foreEdgeX, bundleCount - 1, bundleCount, bundleSpacing); - const anchor = spineCurvePoint(1, spineWidth); - const chordLength = Math.hypot(target.x - anchor.x, target.y - anchor.y); - const solverSlack = PAGE_SPLINE_LENGTH - chordLength; - const minimumSlack = PAGE_SPLINE_LENGTH / (PAGE_LINE_SEGMENTS + 1); - return solverSlack >= minimumSlack; + return PAGE_COUNT_MAX; } function calculateBundleSpacing(bundleCount, spineWidth, leftCount) { diff --git a/public/webgl-book-shape-lab.html b/public/webgl-book-shape-lab.html index 74b23c8..811abdc 100644 --- a/public/webgl-book-shape-lab.html +++ b/public/webgl-book-shape-lab.html @@ -74,6 +74,6 @@ 0 / 10 - +