全部评论 3

  • 太多了,写不下去。

    2天前 来自 安徽

    1
  •         };
            
            // 反射光线
            const reflectionAngleRad = incidentAngleRad;
            const reflectionEndX = incidentPoint.x + Math.sin(reflectionAngleRad) * 200;
            const reflectionEndY = incidentPoint.y - Math.cos(reflectionAngleRad) * 200;
            
            const reflectionRay = {
                start: { x: incidentPoint.x, y: incidentPoint.y },
                end: { x: reflectionEndX, y: reflectionEndY },
                angle: reflectionAngleRad
            };
            
            // 折射光线
            let refractionRay = null;
            let isRefracted = true;
            let isTotalReflection = false;
            
            // 使用斯奈尔定律计算折射角
            const sinRefraction = (n1 / n2) * Math.sin(incidentAngleRad);
            
            // 检查是否发生全反射
            if (Math.abs(sinRefraction) > 1 && n1 > n2) {
                isRefracted = false;
                isTotalReflection = true;
            } else {
                const refractionAngleRad = Math.asin(sinRefraction);
                const refractionEndX = incidentPoint.x + Math.sin(refractionAngleRad) * 200;
                const refractionEndY = incidentPoint.y + Math.cos(refractionAngleRad) * 200;
                
                refractionRay = {
                    start: { x: incidentPoint.x, y: incidentPoint.y },
                    end: { x: refractionEndX, y: refractionEndY },
                    angle: refractionAngleRad
                };
            }
            
            return {
                incidentRay,
                reflectionRay,
                refractionRay,
                isRefracted,
                isTotalReflection
            };
        }
        
        // 绘制光线
        function drawRay(ctx, ray, color, lineWidth, dashed = false) {
            ctx.beginPath();
            ctx.moveTo(ray.start.x, ray.start.y);
            ctx.lineTo(ray.end.x, ray.end.y);
            
            if (dashed) {
                ctx.setL
    

    昨天 来自 安徽

    0
  • ber,狠入啊

    2天前 来自 浙江

    0

热门讨论