Files
freeCodeCamp/curriculum/challenges/ukrainian/10-coding-interview-prep/project-euler/problem-144-investigating-multiple-reflections-of-a-laser-beam.md

3.6 KiB
Raw Permalink Blame History

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
5900f3fc1000cf542c50ff0f Завдання 144: Дослідження множинних відображень лазерного променя 5 301773 problem-144-investigating-multiple-reflections-of-a-laser-beam

--description--

У лазерній фізиці "біла клітина" - це дзеркальна система, яка діє як лінія затримки для лазерного променя. Промінь проникає у клітину, відскакує від дзеркал, і, зрештою, повертається назад.

Конкретна біла клітина, яку ми розглянемо, - це еліпс із рівнянням 4 {x}^2 + y^2 = 100

Ділянка, що відповідає 0.01 ≤ x ≤ +0.01 у верхній частині, відсутня, що дозволяє світлу входити і виходити через отвір.

світловий промінь починається в точці (0,0, 10,1) і стрикається з дзеркалом в точці (1,4, -9,6) анімація з першими 10 віддзеркаленнями променя

Світловий промінь у цій задачі починається в точці (0,0, 10,1) безпосередньо біля білої клітини, і промінь спочатку стикається з дзеркалом в точці (1,4, -9,6).

Кожного разу, коли лазерний промінь потрапляє на поверхню еліпса, він дотримується звичного закону відбиття «кут падіння дорівнює куту відбиття» Тобто і промінь, що падає, і відбитий промінь, утворюють однаковий кут із нормаллю у точці падіння.

На малюнку зліва червона лінія показує перші дві точки дотику між лазерним променем та стінкою білої клітини; синя лінія показує лінію, дотичну до еліпса в точці падіння першого відскоку.

Кут нахилу m дотичної лінії в будь-якій точці (x, y) заданого еліпса: m = ℉4 × \frac{x}{y}

Нормаль — перпендикуляр до дотичної, що проходить через точку дотику.

Анімація праворуч показує перші 10 віддзеркалень променя.

Скільки разів промінь потрапляє на внутрішню поверхню білої клітини перед виходом?

--hints--

laserBeamReflections() має повертати до354.

assert.strictEqual(laserBeamReflections(), 354);

--seed--

--seed-contents--

function laserBeamReflections() {

  return true;
}

laserBeamReflections();

--solutions--

// solution required