freeCodeCamp/curriculum/challenges/russian/08-coding-interview-prep/project-euler/problem-363-bzier-curves.ru...

3.0 KiB
Raw Blame History

id challengeType title videoUrl localeTitle
5900f4d91000cf542c50ffeb 5 Problem 363: Bézier Curves Задача 363: кривые Безье

Description

Кубическая кривая Безье определяется четырьмя точками: P0, P1, P2 и P3.

Кривая построена следующим образом: на отрезках P0P1, P1P2 и P2P3 нарисованы точки Q0, Q1 и Q2 такие, что P0Q0 / P0P1 = P1Q1 / P1P2 = P2Q2 / P2P3 = t (t в [0,1]). На отрезках Q0Q1 и Q1Q2 точки R0 и R1 рисуются так, что Q0R0 / Q0Q1 = Q1R1 / Q1Q2 = t при одном и том же значении t. На отрезке R0R1 точка B нарисована так, что R0B / R0R1 = t при одном и том же значении t. Кривая Безье, определяемая точками P0, P1, P2, P3, является локусом B, поскольку Q0 принимает все возможные положения на сегменте P0P1. (Обратите внимание, что для всех точек значение t является одинаковым.)

На этом (внешнем) веб-адресе вы найдете апплет, который позволяет перетаскивать точки P0, P1, P2 и P3, чтобы увидеть, как выглядит кривая Безье (зеленая кривая), определенная этими точками. Вы также можете перетащить точку Q0 по сегменту P0P1.

Из построения видно, что кривая Безье будет касаться отрезков P0P1 в P0 и P2P3 в P3.

Для аппроксимации четверти круга используется кубическая кривая Безье с P0 = (1,0), P1 = (1, v), P2 = (v, 1) и P3 = (0,1). Значение v> 0 выбирается таким образом, что площадь, заключенная в линии OP0, OP3 и кривая, равна π / 4 (площадь четвертной окружности).

На сколько процентов длина кривой отличается от длины четверти круга? То есть, если L - длина кривой, вычислите 100 × L - π / 2π / 2Выполните свой ответ округленным до десяти цифр за десятичной точкой.

Instructions

Tests

tests:
  - text: ''
    testString: 'assert.strictEqual(euler363(), 0.0000372091, "<code>euler363()</code> should return 0.0000372091.");'

Challenge Seed

function euler363() {
  // Good luck!
  return true;
}

euler363();

Solution

// solution required