Cornu 나선은 빛의 전파 경로 적분을위한 파인만의 방법을 사용하여 계산할 수 있습니다. 우리는 다음과 같은 이산화를 사용하여이 적분을 근사합니다.
이 이미지에서와 같이 거울을 고려하십시오. S
광원은 P
어디에 있고 우리가 빛을 수집하는 지점입니다. 우리는 빛 S
이 거울의 각 점에서 직선으로 튀어 나온다고 가정합니다 P
. 우리는 미러로 분할 N
표지 본 예 13에서, 세그먼트 A
에 M
광의 광로 길이가되도록, R=SN+NP
여기서 SN
부터의 거리 S
미러 세그먼트 N
와 유사 P
. ( 이미지에서 점 S
과 P
거울까지 의 거리는 시각적 목적으로 많이 단축되었습니다. 블록 Q
은 관련이 없으며 거울을 통한 반사를 보장하기 위해 순전히 배치되며 거울을 통해 직접 빛을 피 S
합니다.P
. )
소정 파수 들어 페이저 광의 광선과 같이 계산 될 수있다 , 여기서 허수 단위이다. 이 모든 페이저를 왼쪽 거울 세그먼트에서 오른쪽으로 머리부터 꼬리까지 플로팅하면 Cornu 나선으로 이어집니다. 13 개의 요소와 아래에 설명 된 값의 경우 다음이 제공됩니다.k
exp(i k R)
i
큰 N
, 즉 많은 거울 세그먼트의 경우, 나선형은 "진정한"Cornu 나선형에 접근합니다. 다양한 값을 사용하여이 이미지를보십시오 N
.
도전
주어진 들어 N
보자 x(n)
수 (X) 의 중심 -coordinate N 번째 미러 세그먼트 ( n = 0,1,2,...,N
) :
x(n) := n/N-0.5
n 번째 미러 세그먼트까지 SN(n)
의 거리를 보자 S = (-1/2, 1000)
.
SN(n) := sqrt((x(n)-(-1/2))^2 + 1000^2)
그리고 비슷하게
NP(n) := sqrt((x(n)-1/2)^2 + 1000^2)
따라서 n 번째 광선으로 이동 한 총 거리는
R(n) := SN(n) + NP(n)
그런 다음 n 번째 미러 세그먼트를 통과하는 광선의 위상 (복소수)을 다음과 같이 정의합니다.
P(n) = exp(i * 1e6 * R(n))
이제 누적 합계를 적분에 대한 근사로 간주합니다.
C(n) = P(0)+P(1)+...+P(n)
목표는 이제 점을 통해 (C(0), C(1), ..., C(n))
부분 선형 곡선을 플로팅합니다 . 여기서 가상 부분은 C(n)
실제 부분에 대해 플롯되어야합니다.
입력 요소의 수 있어야한다 N
(100)의 최소 및 적어도 1 백만 엘리먼트의 최대 (기타 물론 가능하다)를 갖는다.
출력은 적어도 400 × 400 화소, 또는 벡터 그래픽을 사용하는 임의의 형식으로 플롯 또는 이미지이어야한다. 모양이 표시되는 한 선의 색, 축 배율 등은 중요하지 않습니다.
이것이 코드 골프이기 때문에 바이트 단위의 가장 짧은 코드가 승리합니다.
이것은 실제 Cornu 나선이 아니라 근사치입니다. 초기 경로 적분은 프레 넬 근사법을 사용하여 근사화되었으며, 거울의 길이는 무한하지 않으며 무한한 수의 세그먼트를 포함하지 않으며, 개별 광선의 진폭에 의해 정규화되지 않습니다.
n
~에서 범위 의 값을1
가졌지 만 변경 당시 유일한 응답자 인 Luis와 flawr와 동의하여에서 그것을 수정0
하여 거울을 대칭으로 만들고 나머지 도전과 일치합니다. 사과.