Dragon Curve

Author

Arkaprovo Das

Published

September 26, 2024

This is a dragon curve written in c using c sketch

website: https://anandology.com/

CODE

#include <stdio.h>
#include <sketch.h>

int power(int a , int b)
{
    int i,p=1;
    if (b==0)
    return 1;
    for (i=1;i<=b;i++)
    p=p*a;
    return p;
}

int ds(int n,int d)
{
    int i,k,x=50,y=-100;
    int a[power(2,n)];
    a[0]=1;
    a[1]=2;
    for (i=1;i<=n-1;i++)
    {
        for (k=power(2,i);k<=power(2,i+1)-1;k++)
        {
            if (k<=3*power(2,i-1)-1)
            {
                a[k]=-a[k-power(2,i)];
            }
            else
            {
                a[k]=a[k-power(2,i)];
            }
        }   
    }
    for (k=0;k<=power(2,n)-1;k++)
    {
        if (a[k]==1)
        {
            y=y+d;
            draw_line(x,y-d,x,y);
        }
        else if (a[k]==2)
        {
            x=x+d;
            draw_line(x-d,y,x,y);
        }
        else if (a[k]==-1)
        {
            y=y-d;
            draw_line(x,y+d,x,y);
        }
        else if (a[k]==-2)
        {
            x=x-d;
            draw_line(x+d,y,x,y);
        }
    }
    save_sketch("dragonspiral.svg");
}

int main(void)
{
    ds(15,2);
}