* fix: clean-up Project Euler 361-380 * fix: improve wording Co-authored-by: Sem Bauke <46919888+Sembauke@users.noreply.github.com> * fix: remove unnecessary paragraph * fix: corrections from review Co-authored-by: Tom <20648924+moT01@users.noreply.github.com> Co-authored-by: Sem Bauke <46919888+Sembauke@users.noreply.github.com> Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
2.1 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
5900f4d91000cf542c50ffeb | Problem 363: Bézier Curves | 5 | 302024 | problem-363-bzier-curves |
--description--
A cubic Bézier curve is defined by four points: P_0
, P_1
, P_2
and P_3
.
The curve is constructed as follows:

On the segments P_0P_1
, P_1P_2
and P_2P_3
the points Q_0
,$Q_1$ and Q_2
are drawn such that \frac{P_0Q_0}{P_0P_1} = \frac{P_1Q_1}{P_1P_2} = \frac{P_2Q_2}{P_2P_3} = t
, with t
in [0,1].
On the segments Q_0Q_1
and Q_1Q_2
the points R_0
and R_1
are drawn such that \frac{Q_0R_0}{Q_0Q_1} = \frac{Q_1R_1}{Q_1Q_2} = t
for the same value of t
.
On the segment R_0R_1
the point B
is drawn such that \frac{R_0B}{R_0R_1} = t
for the same value of t
.
The Bézier curve defined by the points P_0
, P_1
, P_2
, P_3
is the locus of B
as Q_0
takes all possible positions on the segment P_0P_1
. (Please note that for all points the value of t
is the same.)
From the construction it is clear that the Bézier curve will be tangent to the segments P_0P_1
in P_0
and P_2P_3
in P_3
.
A cubic Bézier curve with P_0 = (1, 0)
, P_1 = (1, v)
, P_2 = (v, 1)
and P_3 = (0, 1)
is used to approximate a quarter circle. The value v > 0
is chosen such that the area enclosed by the lines OP_0
, OP_3
and the curve is equal to \frac{π}{4}
(the area of the quarter circle).
By how many percent does the length of the curve differ from the length of the quarter circle? That is, if L
is the length of the curve, calculate 100 × \displaystyle\frac{L − \frac{π}{2}}{\frac{π}{2}}
. Give your answer rounded to 10 digits behind the decimal point.
--hints--
bezierCurves()
should return 0.0000372091
.
assert.strictEqual(bezierCurves(), 0.0000372091);
--seed--
--seed-contents--
function bezierCurves() {
return true;
}
bezierCurves();
--solutions--
// solution required