Thursday, January 22, 2009

Assignment 3 Bezier Curves



a

void setup()
{
  size(200,600);
  background(0);
  stroke(255);
}

void draw()
{
  LinCurv(15,150,75,15);
  LinCurv(50,120,120,160);
  LinCurv(130,130,170,25);
  QuadCurv(50,370,80,210,110,270);
  QuadCurv(90,380,140,290,190,390);
  CubicCurv(50,570,40,500,100,490,150,580);
  CubicCurv(120,500,110,410,170,420,190,510);
}

void LinCurv(int x0, int y0, int x1, int y1)
{
  for(float t=0; t <>
  {
    float x,y;
    
    x = x0 *(1-t)+ t * x1;
    y = y0 *(1-t)+ t*y1;
    point(x, y);
  }
}

void QuadCurv(int x0, int y0, int x1, int y1, int x2, int y2)
{
  float x,y;
  for(float t=0; t<>
  {
    x= (1-t)*(1-t)*x0 + 2*(1-t)*t*x1 + t*t*x2;
    y= (1-t)*(1-t)*y0 + 2*(1-t)*t*y1 + t*t*y2;
    point(x,y);
  }
}

void CubicCurv(int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3)
{
  float x, y;
  for(float t = 0 ; t <>
  {
    x= (1-t)*(1-t)*(1-t)*x0 + 3 *(1-t)*(1-t)*t*x1+ 3*(1-t)*(1-t)*t*t*x2 + t*t*t*x3;
    y= (1-t)*(1-t)*(1-t)*y0 + 3 *(1-t)*(1-t)*t*y1+ 3*(1-t)*(1-t)*t*t*y2 + t*t*t*y3;
    point(x,y);
  }
}




Wednesday, January 14, 2009

Homework 2


Homework 2


void setup()
{
size(200,200);
background(0);
}

void draw()
{
  drawWeb(150);
  drawLine(120,10,170,150);
  drawCircle(100,100,15);
}

void drawCircle(int x0, int y0, int radius)
{
  int f = 1 - radius;
  int ddF_x = 1;
  int ddF_y = -2 * radius;
  int x = 0;
  int y = radius;
  
  point(x0, y0 + radius);
  point(x0, y0 - radius);
  point(x0 + radius, y0);
  point(x0 - radius, y0);
  
  while(x< ya)
  {
    ddF_x = 2*x + 1;
    ddF_y = -2*y;
    f = x*x +y*y - radius*radius + 2*x-y +1;
    if (f>0)
    {
      y--;
      ddF_y += 2;
      f += ddF_y;
    }
    x++;
    ddF_x += 2;
    f+= ddF_x;
    point(x0 + x, y0+y);
    point(x0 - x, y0+y);
    point(x0 + x, y0-y);
    point(x0 - x, y0-y);
    point(x0 + y, y0 + x);
    point(x0 - y, y0+x);    
    point(x0 + y, y0-x);
    point(x0 -y, y0-x);
  }
}
void drawLine(int x0, int y0, int x1, int y1)
{
  
  
 int rise = y1 - y0; 
 int run = x1 - x0;
 float error = 0;
 float slope = (float)rise/run;
 int y = y1;
 
 for(int x=x0; x <= x1;x++)
 {
 point(x,y);
 error = error + slope;
 if(abs(error) >= 0.5)
 {
   y=y+1;
   error -= 1.0;
 }
 }
 
}

void drawWeb(int siz)
{
for (int i = 1; i < i =" i+5)
{
  stroke(255);
  line(0, siz, i, 0);
  siz--;
}


for (int i = 1; i < i =" i+5)
{
  stroke(255);
  line(siz, 0, 0, i);
  siz--;
}
}