Lorentz Transformation
const canvas = document.getElementById('lorentzCanvas');
const ctx = canvas.getContext('2d');
const slider = document.getElementById('velocitySlider');

// Constants
const originX = canvas.width / 2;
const originY = canvas.height / 2;
const scaleFactor = 100; // Adjust as needed to scale diagram

// Draw the initial diagram
drawLorentzTransformation(0);

// Listen for slider input
slider.addEventListener('input', (event) => {
    const velocity = event.target.value;
    drawLorentzTransformation(velocity);
});

function drawLorentzTransformation(velocity) {
    // Clear the canvas
    ctx.clearRect(0, 0, canvas.width, canvas.height);

    // Calculate gamma
    const v = parseFloat(velocity);
    const gamma = 1 / Math.sqrt(1 - v * v);

    // Draw light cones
    ctx.beginPath();
    ctx.moveTo(originX, originY);
    ctx.lineTo(originX - scaleFactor, originY - scaleFactor);
    ctx.lineTo(originX + scaleFactor, originY - scaleFactor);
    ctx.closePath();
    ctx.strokeStyle = 'red';
    ctx.stroke();

    // Draw transformed axes
    ctx.beginPath();
    ctx.moveTo(originX, originY);
    ctx.lineTo(originX + gamma * scaleFactor, originY - v * gamma * scaleFactor);
    ctx.moveTo(originX, originY);
    ctx.lineTo(originX + v * gamma * scaleFactor, originY - gamma * scaleFactor);
    ctx.strokeStyle = 'blue';
    ctx.stroke();

    // Draw original axes
    ctx.beginPath();
    ctx.moveTo(originX, originY);
    ctx.lineTo(originX, originY - scaleFactor);
    ctx.moveTo(originX, originY);
    ctx.lineTo(originX + scaleFactor, originY);
    ctx.strokeStyle = 'black';
    ctx.stroke();
}