First of all, amazing work! This is an incredibly useful compilation of results about Bezier curves.
There appears to be some confusion in the section "Curve Offsetting", in the note "What do you mean, you can't? Prove it.". Quick links to the relevant section:
Indeed, the normalized normal vector is the orthogonal of the normalized tangent vector, which is B'(t) divided by its norm ||B'(t)||. So far so good.
But then the note explains that "determining the length ||B'(t)|| requires computing an arclength, ...", and then goes on to define ||B'(t)|| as the length of the curve B'(t) for t in [0, 1], involving an integral and the second derivative of B(t). I'm pretty sure this is incorrect, and way too complicated ;)
The length of B'(t) is simply its magnitude as a vector, that is:
$||B'(t)|| = \sqrt{ B_x'(t)^2 + B_y'(t)^2 }$
No integral involved. But it's enough to conclude that indeed, as the note says, the offset curve defined by:
Hi @Pomax.
First of all, amazing work! This is an incredibly useful compilation of results about Bezier curves.
There appears to be some confusion in the section "Curve Offsetting", in the note "What do you mean, you can't? Prove it.". Quick links to the relevant section:
Everything makes sense up to (and including):
$N(t) = \bot \left ( \frac{B'(t)}{\left || B'(t) \right || } \right )$
Indeed, the normalized normal vector is the orthogonal of the normalized tangent vector, which is B'(t) divided by its norm ||B'(t)||. So far so good.
But then the note explains that "determining the length ||B'(t)|| requires computing an arclength, ...", and then goes on to define ||B'(t)|| as the length of the curve B'(t) for t in [0, 1], involving an integral and the second derivative of B(t). I'm pretty sure this is incorrect, and way too complicated ;)
The length of B'(t) is simply its magnitude as a vector, that is:
$||B'(t)|| = \sqrt{ B_x'(t)^2 + B_y'(t)^2 }$
No integral involved. But it's enough to conclude that indeed, as the note says, the offset curve defined by:
$O(t) = B(t) + d \cdot \bot \left ( \frac{B'(t)}{||B'(t)|| } \right ) $
is indeed not a polynomial, since it is equal to the following that involves the inverse of a square root of a polynomial:
$O(t) = B(t) + d \cdot \bot \left ( \frac{B'(t)}{ \sqrt{ B_x'(t)^2 + B_y'(t)^2 } } \right ) $
I'm happy to make corrections as a PR if you are interested.
Best regards, Boris