@use 'sass:math'; // ============================================================================= // 3D Print Infill Patterns // ============================================================================= // 1. Grid (Rectilinear Infill) // Basic square grid, standard infill. @mixin pattern-grid($color, $size: 40px, $weight: 1px) { background-image: linear-gradient($color $weight, transparent $weight), linear-gradient(90deg, $color $weight, transparent $weight); background-size: $size $size; } // 2. Triangular (Isogrid / Triangle Infill) // Strong aesthetic, often used for structural parts. @mixin pattern-triangular($color, $size: 40px, $weight: 1px) { background-image: linear-gradient(30deg, $color 1px, transparent 1px), linear-gradient(150deg, $color 1px, transparent 1px), linear-gradient(90deg, $color 1px, transparent 1px); background-size: $size $size; // Note: Simplification of true isogrid for CSS stability } // 3. Hexagonal (Honeycomb Infill) // Flat top-view hex lattice (no 3D depth effect). @mixin pattern-honeycomb($color, $size: 32px) { background-color: transparent; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='52' height='45' viewBox='0 0 52 45'%3E%3Cg fill='none' stroke='%23000' stroke-width='1.25'%3E%3Cpath d='M13 0H39L52 22.5L39 45H13L0 22.5Z'/%3E%3Cpath d='M39 -22.5H65L78 0L65 22.5H39L26 0Z'/%3E%3Cpath d='M39 22.5H65L78 45L65 67.5H39L26 45Z'/%3E%3C/g%3E%3C/svg%3E"); background-size: $size calc(#{$size} * 0.8653846); background-position: 0 0; background-repeat: repeat; } // 4. Diagonal (Rectilinear 45deg) @mixin pattern-diagonal($color, $size: 20px, $weight: 1px) { background-image: repeating-linear-gradient(45deg, $color 0, $color $weight, transparent $weight, transparent 50%), repeating-linear-gradient(-45deg, $color 0, $color $weight, transparent $weight, transparent 50%); background-size: $size $size; } // 5. Gyroid (Approximation via Curves) // Using radial gradients to simulate organic curves @mixin pattern-gyroid($color, $size: 40px) { background-image: radial-gradient(circle at 0 0, transparent 47%, $color 48%, $color 50%, transparent 51%), radial-gradient(circle at 100% 100%, transparent 47%, $color 48%, $color 50%, transparent 51%); background-size: $size $size; } // 6. Cross Hatch (45deg Grid) // Intersecting diagonal lines @mixin pattern-cross-hatch($color, $size: 24px, $weight: 1px) { background-image: repeating-linear-gradient(45deg, $color 0, $color $weight, transparent $weight, transparent 50%), repeating-linear-gradient(-45deg, $color 0, $color $weight, transparent $weight, transparent 50%); background-size: $size $size; } // 7. Rectilinear (Alternating Lines) // Simulating a raster scan path or simple linear infill @mixin pattern-rectilinear($color, $size: 20px, $weight: 1px) { background-image: repeating-linear-gradient(90deg, $color 0, $color $weight, transparent $weight, transparent $size); background-size: $size $size; }