Beauty of D

Gor Gyolchanyan gor.f.gyolchanyan at gmail.com
Wed Apr 18 11:19:43 PDT 2012


Error:

replace

new real[k]

with

new real[d][k]

On Wed, Apr 18, 2012 at 10:10 PM, Gor Gyolchanyan
<gor.f.gyolchanyan at gmail.com> wrote:
> This is a great example of how beautiful D really is.
>
> /// Returns the t-th point on the bezier curve, defined by non-empty
> set p of d-dimensional points, where t : [0, 1] and d > 1.
> real[d] bezier(size_t d)(real[d][] p, real t)
>    if(d > 1)
> in
> {
>    assert(p.length > 0);
>    assert(t >= 0.0L && t <= 1.0L);
> }
> body
> {
>    return p.length > 1 ? (1 - t) * p[0..$-1].bezier(t) + t *
> p[1..$].bezier(t) : p[0];
> }
>
> /// Returns k unidistant points on the bezier curve, defined by
> non-empty set p of d-dimensional points, where k > 0 and d > 1.
> real[d][] bezier(size_t d)(real[d][] p, size_t k)
>    if(d > 1)
> in
> {
>    assert(p.length > 0);
>    assert(k > 0);
> }
> body
> {
>    real[d][] result = new real[k];
>    foreach(i; 0..k)
>        result[k] = p.bezier(i * (1.0L / k));
>    return result;
> }
>
> --
> Bye,
> Gor Gyolchanyan.



-- 
Bye,
Gor Gyolchanyan.


More information about the Digitalmars-d mailing list