Корінь спіраль може бути обчислена з використанням методи Фейнман для інтегралів по шляхах поширення світла. Ми наблизимо цей інтеграл, використовуючи наступну дискретизацію.
Розглянемо дзеркало, як на цьому зображенні, де S
джерело світла та P
точка, де ми збираємо світло. Ми припускаємо, що світло відбивається в прямому промені від S
кожної точки дзеркала, а потім до точки P
. Розділимо дзеркало в N
сегментах, в даному прикладі 13, міченого A
з M
, так що довжина шляху світла R=SN+NP
, де SN
це відстань від S
до дзеркального сегмента N
, і аналогічні для P
. ( Зверніть увагу, що на зображенні відстань точок S
і P
до дзеркала значно скорочено для візуальних цілей. Блок Q
досить не має значення і розміщується виключно для забезпечення відбиття через дзеркало та уникнення прямого світла від S
доP
. )
Для заданого хвильового числа Фазор променя світла може бути обчислена як , де знаходиться уявна одиниця. Позначення всіх цих фазорів головою до хвоста від лівого сегмента дзеркала праворуч веде до спіралі Корну. Для 13 елементів та значень, описаних нижче, це дає:k
exp(i k R)
i
Для великих N
, тобто багатьох дзеркальних сегментів, спіраль наближається до "справжньої" спіралі Корну. Перегляньте це зображення, використовуючи різні значення для N
:
Виклик
Для заданого N
нехай x(n)
буде x -координатний центр n -го сегмента дзеркала ( n = 0,1,2,...,N
):
x(n) := n/N-0.5
Нехай SN(n)
буде відстань S = (-1/2, 1000)
до n-го відрізка дзеркала:
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 пікселів, або з використанням векторної графіки. Колір лінії, масштаб осей і т. Д. Не мають значення, поки видно форму.
Оскільки це код-гольф, виграє найкоротший код у байтах.
Зверніть увагу, що це не фактична спіраль Корну, а її наближення. Початковий інтеграл шляху був апробований за допомогою наближення Френеля, і дзеркало не має нескінченної довжини і не містить нескінченну кількість сегментів, а також згадане воно не нормалізується амплітудами окремих променів.
n
починаючи з1
, але, погоджуючись з Луїсом і недоліком, які були єдиними відповідачами на момент зміни, я виправив це на те0
, що робить дзеркало симетричним і відповідає іншій проблемі. Вибачення.