Các Cornu Spiral thể được tính toán sử dụng phương pháp của Feynman cho tích phân đường của công tác tuyên truyền ánh sáng. Chúng tôi sẽ tính gần đúng tích phân này bằng cách sử dụng sự phân biệt sau đây.
Hãy xem xét một tấm gương như trong hình ảnh này, nơi S
là nguồn sáng và P
điểm mà chúng ta thu thập ánh sáng. Chúng ta giả sử ánh sáng dội vào một tia thẳng từ S
đến từng điểm trong gương rồi đến điểm P
. Chúng tôi chia gương vào N
phân đoạn, trong ví dụ này 13, dán nhãn A
để M
, do đó độ dài đường đi của ánh sáng là R=SN+NP
, nơi SN
là khoảng cách từ S
phân khúc gương N
, và tương tự cho P
. ( Lưu ý rằng trong hình ảnh khoảng cách của điểm S
và P
để gương đã được rút ngắn rất nhiều, cho các mục đích thị giác. Khối Q
là khá thích hợp, và được đặt hoàn toàn để đảm bảo phản ánh qua gương, và tránh ánh sáng trực tiếp từ S
đếnP
. )
Đối với một số sóng cho k
các phasor của một tia ánh sáng có thể được tính như exp(i k R)
, nơi i
là đơn vị ảo. Vẽ tất cả các pha này từ đầu đến đuôi từ đoạn gương bên trái sang phải dẫn đến xoắn ốc Cornu. Đối với 13 phần tử và các giá trị được mô tả bên dưới, điều này mang lại:
Đối với lớn N
, tức là rất nhiều phân khúc gương, xoắn ốc tiếp cận với xoắn ốc Cornu "thật". Xem hình ảnh này bằng các giá trị khác nhau cho N
:
Thử thách
Đối với một cho trước, N
hãy x(n)
là trung tâm x- phối hợp của phân đoạn gương thứ n ( n = 0,1,2,...,N
):
x(n) := n/N-0.5
Đặt SN(n)
khoảng cách S = (-1/2, 1000)
đến đoạn gương thứ n:
SN(n) := sqrt((x(n)-(-1/2))^2 + 1000^2)
và tương tự
NP(n) := sqrt((x(n)-1/2)^2 + 1000^2)
Vậy tổng quãng đường mà tia sáng thứ n đi được là
R(n) := SN(n) + NP(n)
Sau đó, chúng tôi xác định phasor (một số phức) của tia sáng đi qua đoạn gương thứ n là
P(n) = exp(i * 1e6 * R(n))
Bây giờ chúng tôi xem xét các khoản tiền tích lũy (như một xấp xỉ với một tích phân)
C(n) = P(0)+P(1)+...+P(n)
Mục tiêu hiện đang vẽ một đường cong tuyến tính từng phần thông qua các điểm (C(0), C(1), ..., C(n))
, trong đó phần ảo của C(n)
nên được vẽ trên phần thực của nó.
Đầu vào phải là số lượng phần tử N
, có tối thiểu 100 và tối đa ít nhất 1 triệu phần tử (tất nhiên là nhiều hơn được phép).
Đầu ra phải là một âm mưu hoặc hình ảnh ở bất kỳ định dạng nào ít nhất 400 × 400 pixel hoặc sử dụng đồ họa vector. Màu sắc của đường, tỷ lệ trục vv là không quan trọng, miễn là hình dạng được nhìn thấy.
Vì đây là mã golf, mã ngắn nhất tính bằng byte sẽ thắng.
Xin lưu ý rằng đây không phải là một vòng xoắn Cornu thực tế, mà là một xấp xỉ với nó. Tích phân đường dẫn ban đầu đã được xấp xỉ bằng cách sử dụng xấp xỉ Fresnel và gương không có độ dài vô hạn và không chứa vô số phân đoạn, cũng như được đề cập, nó không được chuẩn hóa bởi biên độ của các tia riêng lẻ.
n
khác nhau1
, nhưng theo thỏa thuận với Luis và flawr, những người trả lời duy nhất tại thời điểm thay đổi, tôi đã sửa nó thành từ0
đó, làm cho gương đối xứng và phù hợp với phần còn lại của thử thách. Lời xin lỗi.