YoungsDoubleSlitInterference/Program.cs

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using PointLighting.TwoDimension;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Drawing.Processing;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using YoungsDoubleSlitInterference;

//
Console.WriteLine("运行中……");

// 1. 创建 LightedSpace2D 空间
var light1 = new IdealPointLight2D() {
    Phase = 0,
    Intensity = 1,
    PolarizationDirection = new Vector2D(0, 0),
    Position = new Vector2D(0, 2E-3),
    Wavelength = 550E-9,
};

var light2 = new IdealPointLight2D() {
    Phase = 0,
    Intensity = 1,
    PolarizationDirection = new Vector2D(0, 0),
    Position = new Vector2D(0, -2E-3),
    Wavelength = 550E-9,
};

var space = new LightedSpace2D(light1, light2);

// 2. 创建两个 Screen 光屏
const int size = 5000;

var screen1 = new Screen<int>((t) => {
    double length = (t - size / 2) * 0.000001;
    return new Vector2D(2 + length / 2, length * Math.Sqrt(3) / 2);
}, Enumerable.Range(0, size));

var screen2 = new Screen<int>((t) => {
    double length = (t - size / 2) * 0.000001;
    return new Vector2D(2, length);
}, Enumerable.Range(0, size));


// 3. 绘制用眼观察 screen1 时大致所能看到的图样
using (Image<Rgba32> output = new(size, 1000))
{
    output.Mutate(p => {
        _ = p.BackgroundColor(Color.Black);
    });

    var color = Color.Green;
    foreach (var current in screen1.Image(space, 550E-9))
    {
        output.Mutate((p) => {
            _ = p.DrawLines(
                color.WithAlpha((float)current.Intensity),
                thickness: 1,
                new Point(current.Parameter, 0),
                new Point(current.Parameter, 1000));
        });
后面还有 43 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。