Re: Any more bugs/typos? Marc Nieper-Wißkirchen 17 Sep 2020 06:59 UTC

A Bézier curve is defined through its control *points*. Don't call
them vectors, please. The canvas is an affine space (with a Euclidean
metric), not a vector space.

Two points shall yield a linear curve, which is perfectly valid.
Three points shall yield a quadratic curve.
Four points shall yield a cubic curve.

I don't understand why the N >= 5 point case is discouraged? There is
a well-defined notion of a Bézier curve of degree N - 1.

Marc

Am Do., 17. Sept. 2020 um 08:04 Uhr schrieb Vladimir Nikishkin
<xxxxxx@gmail.com>:
>
> >which it isn't--(draw-bezier vec1 vec2) is a valid call)
>
> It is required, or at least I meant it to be required. For simple
> straight lines, (draw-line) is a reasonable choice.
> I think Bezier curves can be reduced to straight lines in the
> two-point case, but I am not exactly sure of the math.
> So at least three points, two knots and a control point are required.
> Moreover, adding additional points (as in 5 arguments) does not turn a
> cubic Bezier into a quartic Bezier in the sample implementation, but
> does some evil image-magick trickery (ImageMagick explicitly warns
> against using 5 points).
>
> >(draw-bezier vec1 vecI ... vecN)
>
> I wanted to use an ellipsis, but ellipsis seems to have some special
> meaning in Scheme (at least in the macro definitions), which I am not
> as familiar as I should be. If it is fine, I will replace the bracket
> notation with the ellipsis.
> The brackets I took from man pages, where it usually denotes
> "optional", and the asterisk means "0 or more times" almost
> everywhere.
>
> On Thu, 17 Sep 2020 at 13:49, Wolfgang Corcoran-Mathe <xxxxxx@sigwinch.xyz> wrote:
> >
> > On 2020-09-17 12:00 +0800, Vladimir Nikishkin wrote:
> > > Is it fine to use the [vecI]* notation, or there is a more common one in Scheme?
> >
> > The [vecI]* notation is unfamiliar to me.  Is it used in other SRFIs,
> > or elsewhere?
> >
> > The new version,
> >
> >     (draw-bezier vec1 vec2 [vecI]* vecN),
> >
> > seems a little misleading, since vecN appears to be required (which it
> > isn't--(draw-bezier vec1 vec2) is a valid call).  If the double-bracket
> > version mentioned earlier seems ugly, I recommend:
> >
> >     (draw-bezier vec1 vecI ... vecN)
> >
> > --
> > Wolfgang Corcoran-Mathe  <xxxxxx@sigwinch.xyz>
> >
> > "A LISP programmer knows the value of everything, but the cost
> > of nothing." --Alan J. Perlis
>
>
>
> --
> Yours sincerely, Vladimir Nikishkin