// Cellular Automata Landing Page - Hub for cellular automata projects const CellularAutomataLandingPage = () => { const { Box, Typography, Card, CardContent, CardActionArea, CardMedia, Grid, Container, Paper, useMediaQuery } = MaterialUI; const isVerySmall = useMediaQuery('(max-width: 400px)'); // Card data for each cellular automata subpage const pages = [ { title: 'Acoustic Modelling', description: 'Acoustic wave propagation simulation using the CA method of Leamy (2008).', route: 'acoustic-modelling', icon: '🌊', image: '/images/acoustic_cellular_automata_thumbnail.webp' }, { title: "Conway's Game of Life", description: 'Interactive cellular automaton simulation devised by mathematician John Conway.', route: 'conways-game-of-life', icon: '🧬', image: '/images/game_of_life_thumbnail.webp' }, ]; // Navigate to a subpage using hash routing const navigateTo = (route) => { window.location.hash = route; }; return ( {/* Header Section */} Cellular Automata Cellular automata are discrete computational models consisting of a network of cells, each evolving over time according to simple local rules based only on the states of neighbouring cells. Despite their simplicity, they can produce remarkably complex behaviour and have applications ranging from physics simulations to mathematical recreation. {/* Navigation Cards Grid */} {pages.map((page) => ( navigateTo(page.route)} sx={{ flexGrow: 1, display: 'flex', flexDirection: 'column', alignItems: 'stretch' }} > {/* Image or Icon placeholder */} {page.image ? ( ) : ( {page.icon} )} {page.title} {page.description} ))} ); }; // Export to global scope for browser-based JSX compilation window.CellularAutomataLandingPage = CellularAutomataLandingPage;